Skip to content

外键约束

create-table-foreign-keys

ON_DELETE

按照外键ON_DELETE CASCADE的规则, 当删除id=1tag 表内的记录时, 与之关联的record表内的tag_id=1的数据也会被同步删除

DROP TABLE IF EXISTS `record`;
DROP TABLE IF EXISTS `tag`;
CREATE TABLE IF not EXISTS `tag`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,

  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;


CREATE TABLE IF not EXISTS `record`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `tag_id` int not NULL,

  PRIMARY KEY (id),

  FOREIGN KEY (tag_id)
    REFERENCES tag(id)
    ON DELETE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO tag (name) VALUES ("A"), ("B");

INSERT INTO record (name, tag_id) values ("a.1", 1), ("a.2", 1), ("b.1", 2), ("b.2", 2);

select name from record where tag_id=1;
select name from record where tag_id=2;

delete from tag where id = 1;

select name from record where tag_id=1;
select name from record where tag_id=2;