mysql五种外键约束的含义
2016-01-30 10:28
435 查看
本文中父表为被引用表, 子表为含有引用其他表字段的表
在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下
On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用
要注意子表的外键列不能为not null
On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用
这个是ANSI SQL-92标准,从mysql4.0.8开始支持
注意:trigger不会受外键cascade行为的影响,即不会解发trigger
在父表上进行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中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复