MySQL外键约束OnDelete和OnUpdate的使用
2016-06-21 11:42
561 查看
On Delete和On Update都有Restrict,No Action, Cascade,Set Null属性。现在分别对他们的属性含义做个解释。
ON DELETE
restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。
no action:意思同restrict.即如果存在从数据,不允许删除主数据。
cascade(级联):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。
set null:当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)
ON UPDATE
restrict(约束):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。
no action:意思同restrict.
cascade(级联):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。
set null:当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。
注:NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。
ON DELETE
restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。
no action:意思同restrict.即如果存在从数据,不允许删除主数据。
cascade(级联):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。
set null:当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)
ON UPDATE
restrict(约束):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。
no action:意思同restrict.
cascade(级联):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。
set null:当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。
注:NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。
相关文章推荐
- mysql 批量更改符合指定条件的记录的主键为一系列值
- MySQL数据库的优化(上)单机MySQL数据库的优化
- mysql和mysqli的区别
- MySQL的FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别
- MySQL 查询优化: LIMIT 1 避免全表扫描提高查询效率
- mysql(二)
- mysql常用函数
- MySQL的时间差函数TIMESTAMPDIFF、DATEDIFF
- c3p0整合mysql报错问题
- mysql存储过程函数实例-轻松搞定mysql函数
- MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
- MySQL自增长列,设置主键和索引
- mysql null和''区别
- Mysql5.7.9原生JSON格式支持
- MySQL命令行导入导出数据库
- mysql数据库主从配置与主从切换(在文章底)
- Redhat6.5下卸载Mysql5.6.31教程
- Redhat6.5下Mysql5.6.31主从复制教程
- MYSQL中取当前周/月/季/年的第一天与最后一天
- express 框架下使用mysql 保存页面抓取的数据