外键约束对子表的含义:

如果在父表中找不到候选键,则不允许在子表上进行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的检查是在语句执行完成时

分享到:

2011-01-12 10:05

浏览 2082

分类:数据库

评论

mysql中的restrict_Mysql 的 Cascade/Restrict/No action相关推荐

  1. mysql cascade|restrict|no action|set null__mysql 外键的几种约束

    mysql cascade|restrict|no action|set null MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中 ...

  2. MySQL中的级联删除与更新策略on delete restrict on update restrict

    MySQL中的级联删除与更新策略on delete restrict on update restrict 在MySQL中,当我们执行级联删除与级联更新时,可能会执行On Delete Restric ...

  3. mysql alert on delete cascade_如何在mysql中删除级联使用?(How do I use on delete cascade in mysql?)...

    如何在mysql中删除级联使用?(How do I use on delete cascade in mysql?) 我有一个组件数据库. 每个组件都是特定的类型. 这意味着组件和类型之间存在多对一的 ...

  4. mysql setnull_1、Mysql无法创建外键的原因 2、MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用...

    在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  5. mysql中nullify_Core Data 数据库 No Action ,Nullify , Cascade , Deny 用法

    假设现在有两个实体,Product 和Manufacturer , 产品和制造商,一个产品只有一个制造商,一个制造商则可能会生产多个商品.这时候制造商和产品则是一对多的关系. 制造商.jpeg 制造商 ...

  6. mysql中关系怎么弄_mysql数据库关系操作

    ### mysql数据库 #### 知识要点: 1. 数据操作增.删.改 2. 外键约束要求 3. 一对多表关系 4. 一对一表关系 5. 多对多表关系 6. 外键约束的参照操作 ### 数据操作 # ...

  7. mysql外键约束脚本_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  8. MySQL中索引与视图的用法与区别详解

    索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴, ...

  9. MySQL中如何定义外键[转]

    MySQL中如何定义外键 假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息.用来保存整机产品信息的表叫做pc:用来保存配件供货信息的表叫做parts. 在pc表中有一个字段,用来描述这款电脑 ...

最新文章

  1. 工业4.0是个白日梦吗?
  2. 如何利用OpenCV寻找轮廓的中心?
  3. canva旋转图片 js_js和canvas实现旋转图片
  4. 请求外部图片的时候,遇到403的错误的解决方案
  5. nodejs环境搭建与express安装配置
  6. HOJ-2662Pieces Assignment(状态压缩,动态规划)
  7. Java IO流练习题-获取文本上每个字符出现的次数
  8. 风控必知必会|两大逻辑表五大基础报表
  9. 中断(一)—— 综述
  10. 《架构之美》pdf书籍
  11. matlab 拉普拉斯金字塔,图像拉普拉斯金字塔(laplacian pyramid)并从金字塔重建原图 matlab程序实现...
  12. 如何利用区块链技术保护知识产权
  13. 管理科学与工程 国内核心期刊 国外a刊及SCI
  14. 不良资产证券化之后,谁来买单?
  15. 创建ArrayList对象,添加5个元素,使用Iterator遍历输出
  16. 幼儿体能五项技能测试软件,体能测查 | 幼儿园体能测试项目及标准,建议新手幼师收藏!...
  17. ViewData与ViewBag比较
  18. Java 中的Lock锁
  19. 2021常州市程序设计小能手真题及题解
  20. cppcheck代码检查工具安装与使用技巧

热门文章

  1. 数据结构 2.3.7
  2. 如何限定IP访问服务器端口(只允许指定IP访问数据库服务器的1433端口)
  3. Java编写简单计算器--实现篇
  4. 线性非时变系统理论(LTI系统理论)
  5. Linux C/C++ or 嵌入式面试之《多进程多线程编程系列》(4) 进程同步和通信的方式有哪些?
  6. 两天签约148个项目,投资总额超900亿,这个领域,马上要有大动作!
  7. Springboot毕设项目大学生毕业管理系统3ep7m(java+VUE+Mybatis+Maven+Mysql)
  8. 《汽车配件公司业务管理信息系统》系统设计报告
  9. numpy中flatten()和ravel()
  10. 一年换三个城市工作好不好?