今天遇到数据库的一个问题,就是每当从主表中删除一个主键id时,由于与他相关联的表中有相关的字段数据,所以无法删除。查了一大堆资料,发现我建表关联用的是on Restrict.可能问题就出在这里吧。
外键约束对子表的含义:
如果在父表中找不到候选键,则不允许在子表上进行insert/update
外键约束对父表的含义:
在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下
. cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录
On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用
. set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not null
On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用
. No action方式
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
这个是ANSI SQL-92标准,从mysql4.0.8开始支持
. Restrict方式
同no action, 都是立即检查外键约束
. Set default方式
解析器认识这个action,但Innodb不能识别,不知道是什么意思...
注意:trigger不会受外键cascade行为的影响,即不会解发trigger
在mysql中,与SQL标准相违背的三点
1. 如果在父表中有多个key值相同,那么在进行外键check时,会当成有相同key值的其他行不存在; 比如当定义了一个restrict行为外键时,一个子表行对应到多个父表行(具有相同key值), Innodb不允许删除父表上的所有这些行
2. 父子表是同一个表,自我参照时不允许指定on update cascade, on update set null
从mysql4.0.13开始,允许同一个表上的on delete set null
从mysql4.0.21开始,允许同一个表上的on delete cascade
但级联层次不能超出15
3, Innodb在检查unique,constraint约束时,是row by row而不是语句或事务结束;
SQL标准中对constraint的检查是在语句执行完成时
分享到:
相关推荐
最新最完整的中英法文ISO3166世界行政区划MySQL级联表,包含中国
uniapp选择器,包含一级,二级级联,三级级联uniapp-picker-master.zip
elementui 级联选择-全国区域选择
uniapp选择器,包含一级,二级级联,三级级联uniapp-picker-master(小程序)
基于MATLAB的一种高精度级联Sigma-Delta调制器的结构设计.pdf
基于级联Dense-UNet和图割的肝脏肿瘤自动分割.docx
mysql级联更新和级联删除,区分有级联和没级联操作的区别之处
级联里德-所罗门和偏振调整卷积(PAC)码_Concatenated Reed-Solomon and Polarization-Adjusted Convolutional (PAC) Codes.pdf
inverse Hibernate_级联关系说明_-_关于cascade和inverse的用法
jQuery+div实现级联省份-城市查询,该实例包含jsp+js+css,所有代码为本人亲自编写,如有疑问请联系本人
洲、国家、地区(省份)三级级联菜单,基于asp+javascript+sql数据库 。 本篇中还包括最近发布过的二级级联菜单源码
摘要:级联马赫-曾德尔干涉仪滤波器可实现平顶化的滤波器频谱唷应,但是利用传统的传输矩阵法,并不能方便地得到级联马赫-曾德尔干涉仪滤波器中各耦合器的耦合系数。将级联马赫-曾德尔干涉仪滤波器与数字信号处理中...
HTML的级联多选下拉框源码,解压粘贴到项目中即可使用
实验五 数据库编程 一、实验目的及要求 1. 常见系统函数的使用方法。 2. 存储过程的使用方法。 3. 触发器的使用方法。 ...2.建立对象时应该先排查在系统表中是否有相同名字的对象。...2)Department应包括的属性有:...
mysql中的cascade级联,set null,restrict限制 都是什么意思,有何区别.zip
针对掺铒光纤放大器(EDFA)增益不平坦对波分复用(WDM)系统传输质量的影响,将有限冲激响应(FIR)滤波器的设计方法引入到级联Mach-zehnder干涉仪型EDFA增益平坦滤波器的设计中。利用混合遗传梯度算法,计算了级联...
紧凑的自级联KTA-OPO,可产生2.6微米的激光
基于GFDM-ROF系统的级联Turbo-STBC编码研究
边界控制匹配扰动的滑模控制稳定级联PDE-ODE系统的稳定性