MySQL級聯刪除與級聯置空

# 約束外鍵中,爲了刪除主表,級聯刪除與級聯置空

SHOW INDEX FROM major;
SHOW INDEX FROM stuinfo;
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stu_major;

# 傳統的方式添加外鍵
ALTER TABLE stuinfo 
ADD CONSTRAINT fk_stu_major FOREIGN KEY(major_id) REFERENCES major(id);

SELECT * FROM major;

INSERT INTO major
VALUES(1,'java'),(2,'H5'),(3,'C');

SELECT * FROM stuinfo;

INSERT INTO stuinfo
SELECT 1,'john1','女',NULL,NULL,1 UNION ALL
SELECT 2,'john2','女',NULL,NULL,1 UNION ALL
SELECT 3,'john3','女',NULL,NULL,2 UNION ALL
SELECT 4,'john4','女',NULL,NULL,2 UNION ALL
SELECT 5,'john5','女',NULL,NULL,1 UNION ALL
SELECT 6,'john6','女',NULL,NULL,3 UNION ALL
SELECT 7,'john7','女',NULL,NULL,3 UNION ALL
SELECT 8,'john8','女',NULL,NULL,1;

# 刪除專業表的三號專業
# 但不能直接刪除,因爲刪除要先刪從表

# ①級聯刪除
ALTER TABLE stuinfo 
ADD CONSTRAINT fk_stu_major FOREIGN KEY(major_id) REFERENCES major(id) ON DELETE CASCADE;


DELETE FROM major WHERE id=3;

# ②級聯置空
ALTER TABLE stuinfo 
ADD CONSTRAINT fk_stu_major FOREIGN KEY(major_id) REFERENCES major(id) ON DELETE SET NULL;

DELETE FROM major WHERE id=2;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章