外键约束对子表的含义: 
  如果在父表中找不到候选键,则不允许在子表上进行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

转载于:https://blog.51cto.com/8796902/1571462

Mysql 的 Cascade Restrict相关推荐

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

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

  2. mysql中的restrict_Mysql 的 Cascade/Restrict/No action

    外键约束对子表的含义: 如果在父表中找不到候选键,则不允许在子表上进行insert/update 外键约束对父表的含义: 在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配 ...

  3. mysql update cascade,何时使用“ON UPDATE CASCADE”

    何时使用"ON UPDATE CASCADE" 我经常使用"ON DELETE CASCADE",但我从不使用"ON UPDATE CASCADE&q ...

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

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

  5. Mysql—(1)—

    sql语句 sql是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 在使用它时,只需要发出"做 ...

  6. MySQL学习笔记 约束以及修改数据表

    *** 约束保证数据的完整性和一致性 *** 约束分为表级约束和列级约束 *** 约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNIQUE KEY(唯一约束) D ...

  7. mysql之外键约束

    关于数据的几点说明: A.约束保证数据的完整性和一致性 B.约束分为表级约束和列级约束,两者之间的区别是约束针对字段的数目的多少来决定的:列级约束只针对一个数据列来约束,表级约束针对两个或者两个以上的 ...

  8. mysql使用数据库_MySQL数据库的常用操作

    学习python少不了和数据库打交道,常见的数据库有:MySQL.SQLite.MongoDB.Redis等,这里主要介绍一下MySQL数据库的基本操作. 数据库听起来感觉好高大上,当你接触之后有种恍 ...

  9. mysql联表查询多记录显示_数据库:MySQL(多表的表记录的查询)(三)

    一.外键约束 1.创建外键 ---每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY ...

  10. mysql之存储引擎和文件配置

    (查看系统服务,在运行里输入services.msc) 补充:将mysql做成系统服务:mysqld --install 取消:mysqld --romove 在服务中可以直接鼠标操作mysql服务的 ...

最新文章

  1. labview生成exe
  2. oracle断电 ora01110,oracle在做备份的时候断电
  3. 【题意+分析】1071 Speech Patterns (25 分)_27行代码AC
  4. centos / Linux 服务环境下安装 Redis 5.0.3
  5. JSF MVC 流程
  6. 从源码分析RocketMQ系列-Consumer消息接收逻辑
  7. endnote参考文献排版_高效管理论文参考文献的方法
  8. 快捷添加请求头的方法
  9. SPI子系统分析之一:框架
  10. Python与Julia : parquet、feather格式比较
  11. Unity Understanding Lifetime Managers
  12. 珍藏的软件/工具/网站分享
  13. rlocfind matlab,绘制根轨迹的MATLAB函数介绍
  14. 【HUSTOJ】1054: 字符图形10-字母三角
  15. 台风怎么看内存颗粒_使用300多元的D4 16G内存是种什么体验
  16. 局域网常见问题解决方案之你可能没有权限使用网络资源无法访问网上邻居
  17. 电信宽带华为HG8245光纤猫开路由、WIFI的破解办法
  18. 物联网芯片型号处理器集锦资料介绍
  19. 短信接口被恶意调用,瞬间损失两万,怎么解决?
  20. 论文阅读笔记-Gated relational stacked denoising autoencoder with localized author embedding for

热门文章

  1. Python部分输出
  2. adobe出的cookbook
  3. ldap 测试表设计
  4. Bridge(桥接)-对象结构型模式
  5. ionic 刷新页面的几种方法
  6. [ACM训练] 算法初级 之 搜索算法 之 广度优先算法BFS (POJ 3278+1426+3126+3087+3414)
  7. C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(3)
  8. Mysql之左连接右连接内连接——示例
  9. spring MongoDB 集成(分页)
  10. VSTS强制删除死锁项