简体   繁体   English

MySQL ON DELETE CASCADE不起作用

[英]MySQL ON DELETE CASCADE not work

i have two table (type innoDb) why when i deleting main table row like 我有两个表(类型为innoDb),为什么当我删除主表行时

+note(im using arch os so my database server type is maria db) + note(我使用arch os,所以我的数据库服务器类型是maria db)

DELETE FROM buildings 
WHERE
    building_no = 2;

relation table rows dont delete ??? 关系表中的行不删除

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
);

This syntax works for me on MySQL database but i can't see issues in your query too 这种语法对我在MySQL数据库上有效,但是我在查询中也看不到问题

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;

or add the constraint after table creation 或在创建表后添加约束

ALTER TABLE `rooms`
  ADD CONSTRAINT `FK_rooms_1` FOREIGN KEY (`building_no`) REFERENCES `buildings` (`building_no`) ON DELETE CASCADE ON UPDATE CASCADE;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM