mysql外键写了会怎么样_mysql使用外键会影响性能吗
推荐答案
孔雀丫丫
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使用外键会影响性能吗相关推荐
- mysql中非主键不能自增吗_mysql非主键自增长用法实例分析
本文实例讲述了mysql非主键自增长用法.分享给大家供大家参考,具体如下: mysql并非只有主键才能自增长,而是设为键的列就可以设置自增长. 如下: CREATE TABLE t1 ( id I ...
- 关于mysql添加外键的时候报错_MySQL添加外键时报错:1215 Cannot add the foreign key constraint的一个可能解决方法...
今天给设计好的班级表和专业表以及院系表添加外键时,报了这样一个错误 ** 1215 Cannot add the foreign key constraint ** 去百度搜了一圈,说可能时因为字段类 ...
- mysql主键重复会覆盖还是_mysql如果主键重复了会发生什么情况
首先创建一个person表: create TABLE `person`( `id` int not null auto_increment, `name` VARCHAR(255) , `age` ...
- limit mysql 性能_MySQL 用 limit 为什么会影响性能?
一.前言 首先说明一下MySQL的版本: mysql> selectversion();+-----------+ | version() | +-----------+ | 5.7.17 | ...
- mysql表定义外键语法_mysql设置外键的语法怎么写?
2012-08-31 回答 mysql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加er图的可读性 有些人认为外键 ...
- mysql怎么写主外键_mysql主外键约束怎么写?
mysql主键约束的写法:"CREATE TABLE 表名(字段名 数据类型 PRIMARY KEY)":mysql外键约束的写法:"CREATE TABLE 表名(FO ...
- mysql外键约束语句级连_mysql之外键约束(级联操作等) 父表子表
不理解的地方标注问号. 网上不同的博客讲的,之间似乎有些矛盾,求推荐好书. 写得不好请指出错误. 父表和子表 当两个表建立一对多关系的时候,"一"的那一端是父表,"多&q ...
- mysql 增加外键_Mysql 添加外键
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名); 例: alter ta ...
- mysql中平方米显示不出来_MySQL - 添加外键
目录 整理了一下这个知识,虽然很简单哈,为了以后的方便. 为已经添加好的数据表添加外键 语法: alter table 表名 add constraint FK_ID foreign key(你的外键 ...
最新文章
- 主成分分析(PCA)Python代码实现
- 58姚劲波:从不裁员,只有淘汰
- vscode html如何插入模板?(!)
- web.xml 通过contextConfigLocation配置spring 的方式
- 是时候“扶正”QQ了
- php转化成json数组,php怎么实现数组转json,php把json转化成数组
- 标准库Allocator的简易实现(二)
- c语言void调用不可作为,C语言的选择题.pdf
- Mac系统如何显示隐藏文件
- Python带我飞:50个有趣而又鲜为人知的Python特性
- Chrome插件安装及程序包无效的解决方法
- 漫画告诉你:区块链到底是什么?
- MongoDB——MongoDB分片集群(Sharded Cluster)两种搭建方式
- 利用python实现外星人入侵大战小游戏(带源代码)
- 【歪门邪道】Android中如何快速回到主页
- Oracle常见问题一千问
- Python实现GIF动图以及视频卡通化,两脚踢碎次元壁 | 机器学习
- 腾讯云服务器设置可访问ip
- 发现了一个彻夜难眠的项目-VDS
- 上海亚商投顾:沪指失守3100点 教育板块逆势大涨
热门文章
- GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)
- sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系
- tf.placeholder函数说明
- LeetCode简单题之圆形赛道上经过次数最多的扇区
- LeetCode简单题之学生分数的最小差值
- 光学传输与摄像头光学技术
- CodeGen准备存储库
- gpgpu-sim卡分配程序设计实例分析
- 配置SSH是出现: sign_and_send_pubkey: signing failed: agent refused operation Permission denied
- Kotlin 使用list.add 时候报错的处理方法