转自:http://blog.csdn.net/codeforme/article/details/5539454

外键约束对子表的含义:

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

mysql级联是什么意思_MySql级联操作相关推荐

  1. mysql利用级联删除和更新_MySql级联删除和更新

    (一)利用外键实现级联删除 1.先建立测试数据库 CREATE TABLE `roottb` ( `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL, `dat ...

  2. mysql 级联同步不成功_MySQL级联复制的同步问题(一)

    展开阅读全文 今天碰到一个有些奇怪的问题,有一套环境,在主从复制的时候有一些问题. 大体的流程设计如下: 三个节点位于三个不同的区域,因为节点1和节点3之间的网络存在问题,所以走了节点2来中转,由此可 ...

  3. mysql查询男生基本情况_MYSQL查询操作 详细

    学习目标 1 掌握select查询所有字段.指定字段的数据 2 掌握消除重复行命令distinct 3 掌握as给字段.表起别名 4 掌握条件查询where后跟比较运算符.逻辑运算符的用法 5 掌握条 ...

  4. mysql不是实际删除_MySQL删除操作其实是假删除

    在 InnoDB 中,你的 delete 操作,并不会真的把数据删除,mysql 实际上只是给删除的数据打了个标记,标记为删除,因此你使用 delete 删除表中的数据,表文件在磁盘上所占空间不会变小 ...

  5. mysql使用命令访问数据库_mysql命令操作数据库

    命令行创建数据库 CREATE DATABASE rst_xxh DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 显示所有库 show data ...

  6. mysql日期减7天_Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)

    1 . 查看当天日期 select current_date(); 2. 查看当天时间 select current_time(); 3.查看当天时间日期 select current_timesta ...

  7. mysql delete 级联删除_MySQL级联删除和更新

    首先,目前在产品环境可用的MySQL版本(指4.0.x和4.1.x)中,只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎. 下面,我们先创建以下测试用数据库表: CREA ...

  8. mysql有没有批量游标_MySQL使用游标批量处理进行表操作_MySQL

    一.概述 本章节介绍使用游标来批量进行表操作,包括批量添加索引.批量添加字段等.如果对存储过程.变量定义.预处理还不是很熟悉先阅读我前面写过的关于这三个概念的文章,只有先了解了这三个概念才能更好的理解 ...

  9. mysql sql语句 参数化_C#参数化执行SQL语句,防止破绽攻击本文以MySql为例【20151108非查询操作】_mysql...

    C#参数化执行SQL语句,防止漏洞攻击本文以mysql为例[20151108非查询操作] 为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果 ...

最新文章

  1. 2022-2028年中国多肽药物市场研究及前瞻分析报告
  2. php开启path_info,Nginx + php-fpm 开启 PATH_INFO 模式
  3. 学python就业要看哪些书-编程0基础自学Python,踩完这些坑,我才成功就业!
  4. 先定个小目标, 使用C# 开发的千万级应用
  5. Nginx配置以及域名转发
  6. pil对图像加透明 python_使用Python图像处理库Pillow处理图像文件
  7. python-去重的三种方式-成员判断-索引判断-集合
  8. Struts2知识点总结
  9. session的removeAttribute()和invalidate()的区别
  10. Python3 CookBook | 数据结构和算法(一)
  11. 【大数据实战项目一】数据下载以及工具软件的使用
  12. [工具推荐] IPv4 和 IPv6 网站测速工具
  13. 450v10 uf电容坏了,用470v50uf替代好吗?
  14. 【深入浅出图像算法】图像处理算法入门好文
  15. U盘重装Win10系统教程
  16. 自我激励的有效方法20个(推荐)
  17. abort()has been called问题
  18. Android美化EditText
  19. css 设置body的最小高度是100%,满屏显示
  20. Sonic-Pi 初体验

热门文章

  1. Vue中使用防抖与截流
  2. 程序员应当正确突破英语障碍
  3. php curl发邮件,使用PHP cURL通过Mailgun API发送带附件的电子邮件
  4. 50句哲理 语录(二)
  5. 自动透视校正为四边形对象
  6. Unable to connect to test manager on xxxxx (The device is passcode protected)
  7. 360企业安全校招内推(可免笔试)
  8. 移动端兼容如: 背景图片、页面放大、卡顿、闪退、内阴影
  9. Win10 - 卸载自带应用
  10. RobotFramework相关