


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MySQL中利用外键实现级联删除、更新MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括RESTRICT、NOACTION、SETNULL和CASCADE。其中RESTRICT和NOACTION相同,是指在子表有关联记录的情况下父表不能更新;CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录;SETNULL则是表示父表在更新或者删除的时候,子表的对应字段被SETNULL。因为只有InnoDB引擎才允许使用外键,所以,我们的数据
2、表必须使用InnoDB引擎。我所使用的版本是Mysql5.1版本的,过程如下:创建数据库:Createdatabasetest;创建两个表,其中第一个表的ic是第二个表(userinfo)的外键:CREATETABLEuser(idint(4)NOTNULL,sexenum(f,m)DEFAULTNULL,PRIMARYKEY(id)ENGINE=InnoDBDEFAULTCHARSET=latin1;CREATETABLEuserinfo(snint(4)NOTNULLAUTO_INCREMENT,useridint(4)NOTNULL,infovarchar(20)DEFAULTNULL,
3、PRIMARYKEY(sn),KEYuserid(userid),CONSTRAINTuserinfo_ibfk_1FOREIGNKEY(userid)REFERENCESuser(id)ONDELETECASCADEONUPDATECASCADE)ENGINE=InnoDBDEFAULTCHARSET=latin1;注意:1、存储引擎必须使用InnoDB引擎;2、外键必须建立索引;3、外键绑定关系这里使用了ONDELETECASCADEONUPDATECASCADE意思是如果外键对应数据被删除或者更新时,将关联数据完全删除或者相应地更新。更多信息请参考MySQL手册中关于InnoDB的文档;
4、好,接着我们再来插入数据测试:INSERTINTOuser(id,sex)VALUES(1,f),(2,m),(3,f);INSERTINTOuserinfo(sn,userid,info)VALUES(1,1,2005054dsf),(2,1,fdsfewfdsfds),(3,1,gdsgergergrtre),(4,2,et34t5435435werwe),(5,2,435rtgtrhfghfg),(6,2,ret345tr4345),(7,3,fgbdfvbcbfdgr),(8,3,45r2343234were),(9,3,wfyhtyjtyjyjy);我们先看一下当前数据表的状态:my
5、sqlshowtables;|Tables_in_test|user|userinfo|+2rowsinset(0.00sec)User表中的数据:mysqlselect*fromuser;|id|sex|1|f|2|m|3|f|3rowsinset(0.00sec)Userinfo表中的数据:mysqlselect*fromuserinfo;|sn|userid|info|1|1|2005054dsf|2|1|fdsfewfdsfds|3|1|gdsgergergrtre|4|2|et34t5435435werwe|5|2|435rtgtrhfghfg|6|2|ret345tr4345|7|
6、3|fgbdfvbcbfdgr|8|3|45r2343234were|9|3|wfyhtyjtyjyjy|9rowsinset(0.00sec)对于建立以上不表,相信对大家也没什么难度了。好的,下面我们就要试验我们的级联删除功能了。我们将删除user表中id为2的数据记录,看看userinf表中userid为2的相关子纪录是否会自动删除:执行删除操作成功!mysqldeletefromuserwhereid=2;QueryOK,1rowaffected(0.03sec)看看user表中已经没有id为2的数据记录了!mysqlselect*fromuser;|id|sex|1|f|3|f|2ro
7、wsinset(0.00sec)再看看userinfo表中已经没有userid为2的3条数据记录了,对应数据确实自动删除了!mysqlselect*fromuserinfo;|sn|userid|info|1|1|2005054dsf|2|1|fdsfewfdsfds|3|1|gdsgergergrtre|7|3|fgbdfvbcbfdgr|8|3|45r2343234were|9|3|wfyhtyjtyjyjy|6rowsinset(0.00sec)更新的操作也类似,因为我们在前面建表的时候已经定义外键删除、更新操作都是CASCADE,所以在这里可以直接测试数据。将user表中原来id为1的数据记录更改为id为4,执行如下:mysqlupdateusersetid=4whereid=1;QueryOK,1rowaffected(0.03sec)Rowsmatched:1Changed:1Warnings:0现在去看看两个表中是数据是否发生了变化:mysqlselect*fromuser;|id|sex|3|f|4|f|2rowsinset(0.00sec)mysqlselect*fromuserinfo;|sn|userid|info|1|4|2005054dsf|2|4|fdsfewfdsfds|3|4|gdsgergergrtre|7|3|fgbdfvbcbfdg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆保管寄售协议书
- 人工费外包合同协议书
- 驾校投资加盟协议书
- 采样作业安全协议书
- 解除期权股权协议书
- 代家长陪读合同协议书
- 让老公签忠诚协议书
- 农场看护房转让协议书
- 车祸报废赔偿协议书
- 解除增资扩股协议书
- 超星尔雅学习通《美学原理(北京大学)》2025章节测试附答案
- (高清版)DB11∕T2256-2024城市轨道交通钢轨踏面维修技术规范
- DB11∕T2279-2024社会单位消防安全评估规范
- 病历质量培训课件
- 机房施工安全培训
- 中国卒中学会急性缺血性卒中再灌注治疗指南+2024解读
- 装饰报价单完整版本
- 设计单位现场施工期间配合及技术经验服务措施
- 【MOOC期末】《英美文学里的生态》(北京林业大学)期末中国大学慕课MOOC答案
- 能源管理系统投标技术文件
- 大学生个人职业生涯规划课件模板
评论
0/150
提交评论