推荐答案

孔雀丫丫

2015.04.10

采纳率:87%    等级:38

已帮助:18万人

外键约束对子表的含义:

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

00分享举报

此回答由管理员  this_is_Null   推荐为最佳回答。

mysql外键写了会怎么样_mysql使用外键会影响性能吗相关推荐

  1. mysql中非主键不能自增吗_mysql非主键自增长用法实例分析

    本文实例讲述了mysql非主键自增长用法.分享给大家供大家参考,具体如下: mysql并非只有主键才能自增长,而是设为键的列就可以设置自增长.   如下: CREATE TABLE t1 ( id I ...

  2. 关于mysql添加外键的时候报错_MySQL添加外键时报错:1215 Cannot add the foreign key constraint的一个可能解决方法...

    今天给设计好的班级表和专业表以及院系表添加外键时,报了这样一个错误 ** 1215 Cannot add the foreign key constraint ** 去百度搜了一圈,说可能时因为字段类 ...

  3. mysql主键重复会覆盖还是_mysql如果主键重复了会发生什么情况

    首先创建一个person表: create TABLE `person`( `id` int not null auto_increment, `name` VARCHAR(255) , `age` ...

  4. limit mysql 性能_MySQL 用 limit 为什么会影响性能?

    一.前言 首先说明一下MySQL的版本: mysql> selectversion();+-----------+ | version() | +-----------+ | 5.7.17 | ...

  5. mysql表定义外键语法_mysql设置外键的语法怎么写?

    2012-08-31 回答 mysql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加er图的可读性 有些人认为外键 ...

  6. mysql怎么写主外键_mysql主外键约束怎么写?

    mysql主键约束的写法:"CREATE TABLE 表名(字段名 数据类型 PRIMARY KEY)":mysql外键约束的写法:"CREATE TABLE 表名(FO ...

  7. mysql外键约束语句级连_mysql之外键约束(级联操作等) 父表子表

    不理解的地方标注问号. 网上不同的博客讲的,之间似乎有些矛盾,求推荐好书. 写得不好请指出错误. 父表和子表 当两个表建立一对多关系的时候,"一"的那一端是父表,"多&q ...

  8. mysql 增加外键_Mysql 添加外键

    语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名); 例: alter ta ...

  9. mysql中平方米显示不出来_MySQL - 添加外键

    目录 整理了一下这个知识,虽然很简单哈,为了以后的方便. 为已经添加好的数据表添加外键 语法: alter table 表名 add constraint FK_ID foreign key(你的外键 ...

最新文章

  1. 主成分分析(PCA)Python代码实现
  2. 58姚劲波:从不裁员,只有淘汰
  3. vscode html如何插入模板?(!)
  4. web.xml 通过contextConfigLocation配置spring 的方式
  5. 是时候“扶正”QQ了
  6. php转化成json数组,php怎么实现数组转json,php把json转化成数组
  7. 标准库Allocator的简易实现(二)
  8. c语言void调用不可作为,C语言的选择题.pdf
  9. Mac系统如何显示隐藏文件
  10. Python带我飞:50个有趣而又鲜为人知的Python特性
  11. Chrome插件安装及程序包无效的解决方法
  12. 漫画告诉你:区块链到底是什么?
  13. MongoDB——MongoDB分片集群(Sharded Cluster)两种搭建方式
  14. 利用python实现外星人入侵大战小游戏(带源代码)
  15. 【歪门邪道】Android中如何快速回到主页
  16. Oracle常见问题一千问
  17. Python实现GIF动图以及视频卡通化,两脚踢碎次元壁 | 机器学习
  18. 腾讯云服务器设置可访问ip
  19. 发现了一个彻夜难眠的项目-VDS
  20. 上海亚商投顾:沪指失守3100点 教育板块逆势大涨

热门文章

  1. GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)
  2. sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系
  3. tf.placeholder函数说明
  4. LeetCode简单题之圆形赛道上经过次数最多的扇区
  5. LeetCode简单题之学生分数的最小差值
  6. 光学传输与摄像头光学技术
  7. CodeGen准备存储库
  8. gpgpu-sim卡分配程序设计实例分析
  9. 配置SSH是出现: sign_and_send_pubkey: signing failed: agent refused operation Permission denied
  10. Kotlin 使用list.add 时候报错的处理方法