[原創]MYSQL中利用外鍵實現級聯刪除和更新


MySQL中利用外鍵實現級聯刪除、更新

  MySQL支持外鍵的存儲引擎只有InnoDB,在創建外鍵的時候,要求父表必須有對應的索引,子表在創建外鍵的時候也會自動創建對應的索引。在創建索引的時候,可以指定在刪除、更新父表時,對子表進行的相應操作,包括RESTRICT、NO ACTION、SET NULL和CASCADE。其中RESTRICT和NO ACTION相同,是指在子表有關聯記錄的情況下父表不能更新;CASCADE表示父表在更新或者刪除時,更新或者刪除子表對應記錄;SET NULL則是表示父表在更新或者刪除的時候,子表的對應字段被SET NULL。因為只有InnoDB引擎才允許使用外鍵,所以,我們的數據表必須使用InnoDB引擎。
我所使用的版本是Mysql5.1版本的,過程如下:

  創建數據庫:

  Create database test;

  創建兩個表,其中第一個表的”id”是第二個表(userinfo)的外鍵:

1 CREATE TABLE `user` (
2 
3 `id` int(4) NOT NULL,
4 
5 `sex` enum('f','m') DEFAULT NULL,
6 
7 PRIMARY KEY (`id`)
8 
9 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 1 CREATE TABLE `userinfo` (
 2 
 3 `sn` int(4) NOT NULL AUTO_INCREMENT,
 4 
 5 `userid` int(4) NOT NULL,
 6 
 7 `info` varchar(20) DEFAULT NULL,
 8 
 9 PRIMARY KEY (`sn`),
10 
11 KEY `userid` (`userid`),
12 
13 CONSTRAINT `userinfo_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`id`)
14 ON DELETE CASCADE ON UPDATE CASCADE
15 
16 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

注意:
1、存儲引擎必須使用InnoDB引擎;
2、外鍵必須建立索引;
3、外鍵綁定關系這里使用了“ ON DELETE CASCADE ” “ON UPDATE CASCADE”,意思是如果外鍵對應數據被刪除或者更新時,將關聯數據完全刪除或者相應地更新。更多信息請參考MySQL手冊中關於InnoDB的文檔;

 

作者:little飛 出處:http://www.cnblogs.com/little-fly/ 歡迎轉載 也請保留這段聲明 謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM