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)的外鍵:

CREATE TABLE `user` (

  `id` int(4) NOT NULL,

  `sex` enum('f','m') DEFAULT NULL,

   PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

CREATE TABLE `userinfo` (

  `sn` int(4) NOT NULL AUTO_INCREMENT,

  `userid` int(4) NOT NULL,

  `info` varchar(20) DEFAULT NULL,

  PRIMARY KEY (`sn`),

  KEY `userid` (`userid`),

  CONSTRAINT `userinfo_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

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


免責聲明!

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



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