首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL ON DELETE CASCADE无效

MySQL ON DELETE CASCADE无效
EN

Stack Overflow用户
提问于 2017-08-29 15:32:14
回答 1查看 917关注 0票数 0

我有两个表(类型为innoDb),为什么我删除主表行时如下所示

+note(我使用的是arch os,所以我的数据库服务器类型是maria db)

代码语言:javascript
复制
DELETE FROM buildings 
WHERE
    building_no = 2;

关系表行不要删除?

代码语言:javascript
复制
CREATE TABLE buildings (
    building_no INT PRIMARY KEY AUTO_INCREMENT,
    building_name VARCHAR(255) NOT NULL,
    address VARCHAR(255) NOT NULL
);

CREATE TABLE rooms (
    room_no INT PRIMARY KEY AUTO_INCREMENT,
    room_name VARCHAR(255) NOT NULL,
    building_no INT NOT NULL,
    FOREIGN KEY (building_no)
        REFERENCES buildings (building_no)
        ON DELETE CASCADE
);
EN

回答 1

Stack Overflow用户

发布于 2017-08-29 15:41:53

此语法适用于MySQL数据库,但在您的查询中也看不到问题

代码语言:javascript
复制
CREATE TABLE  `rooms` (
  room_no INT PRIMARY KEY AUTO_INCREMENT,
  room_name VARCHAR(255) NOT NULL,
  building_no INT NOT NULL,
  CONSTRAINT `FK_rooms_1` FOREIGN KEY (`building_no`) REFERENCES `buildings` 
  (`building_no`) ON DELETE CASCADE
) ENGINE=InnoDB;

或者在创建表之后添加约束

代码语言:javascript
复制
ALTER TABLE `rooms`
  ADD CONSTRAINT `FK_rooms_1` FOREIGN KEY (`building_no`) REFERENCES `buildings` (`building_no`) ON DELETE CASCADE ON UPDATE CASCADE;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45933236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档