zoukankan      html  css  js  c++  java
  • [原创]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/ 欢迎转载 也请保留这段声明 谢谢!

    大家可以相互学习,我们都是热爱编程的IT少年,大家一起努力,让我们的IT梦飞得更高吧!!!
  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/little-fly/p/6252131.html
Copyright © 2011-2022 走看看