我对外键的回忆
添加外鍵:(注意:constraint前面沒得add,add是alter的時候才會有的)
CONSTRAINT stu_class_fk
FOREIGN KEY(stu_id)
REFERENCES stu_class(id)
ON UPDATE CASCADE
ON DELETE CASCADE
在添加外鍵的時候,必須保證外鍵到的主表的字段為unique的,或者是primary key。
CREATE TABLE stu_class(
id INT ?UNIQUE
);
CREATE TABLE student(
class_id INT,
CONSTRAINT stu_class_fk
FOREIGN KEY(class_id)
REFERENCES stu_class(id)
ON UPDATE CASCADE
ON DELETE CASCADE
);
INSERT INTO stu_class VALUE(1), (2), (3);
INSERT INTO student VALUE(1), (1), (2), (2), (3), (3);?
-- 刪除主表中的數(shù)據(jù),因為級聯(lián)刪除,從表中的數(shù)據(jù)沒有了。
DELETE FROM stu_class WHERE id = 1;
-- 刪除從表中的數(shù)據(jù),主表并不會受到影響
DELETE FROM student WHERE class_id = 2;
-- 修改主表中的數(shù)據(jù),因為級聯(lián)修改,從表中的數(shù)據(jù)一起修改了。
UPDATE stu_class SET id = 5 WHERE id = 3;
-- 從表中的數(shù)據(jù)是不能修改的!
UPDATE student SET id = 2 WHERE id = 5;
-- 包括很多時候我們設置了主鍵自增長,沒有辦法truncate從表中的自增長記錄
-- 只能通過先設置外鍵為0,再設置外鍵為1
-- 額外補充:其實在mysql中是沒有boolean 類型的,所有boolean的值都是被轉化成0和1:0f,1t。
SET FOREIGN_KEY_CHECKS = 0;
SET FOREIGN_KEY_CHECKS = 1;
CONSTRAINT stu_class_fk
FOREIGN KEY(stu_id)
REFERENCES stu_class(id)
ON UPDATE CASCADE
ON DELETE CASCADE
在添加外鍵的時候,必須保證外鍵到的主表的字段為unique的,或者是primary key。
CREATE TABLE stu_class(
id INT ?UNIQUE
);
CREATE TABLE student(
class_id INT,
CONSTRAINT stu_class_fk
FOREIGN KEY(class_id)
REFERENCES stu_class(id)
ON UPDATE CASCADE
ON DELETE CASCADE
);
INSERT INTO stu_class VALUE(1), (2), (3);
INSERT INTO student VALUE(1), (1), (2), (2), (3), (3);?
-- 刪除主表中的數(shù)據(jù),因為級聯(lián)刪除,從表中的數(shù)據(jù)沒有了。
DELETE FROM stu_class WHERE id = 1;
-- 刪除從表中的數(shù)據(jù),主表并不會受到影響
DELETE FROM student WHERE class_id = 2;
-- 修改主表中的數(shù)據(jù),因為級聯(lián)修改,從表中的數(shù)據(jù)一起修改了。
UPDATE stu_class SET id = 5 WHERE id = 3;
-- 從表中的數(shù)據(jù)是不能修改的!
UPDATE student SET id = 2 WHERE id = 5;
-- 包括很多時候我們設置了主鍵自增長,沒有辦法truncate從表中的自增長記錄
-- 只能通過先設置外鍵為0,再設置外鍵為1
-- 額外補充:其實在mysql中是沒有boolean 類型的,所有boolean的值都是被轉化成0和1:0f,1t。
SET FOREIGN_KEY_CHECKS = 0;
SET FOREIGN_KEY_CHECKS = 1;
轉載于:https://www.cnblogs.com/mzywucai/p/11053494.html
總結
- 上一篇: SpringBoot学习笔记(8):事物
- 下一篇: 围观神龙架构首次开箱,现场直播暴力拆机