Innodb foreign key 和 sql standards的区别:
在 sel statement 中的inserts,deletes,updates 很多行的时候,fk 会一行一行检查。 innodb
是设置 shared row_level locks 在父表或者子表上,MySQL CHECK 会立即检查是否有符合的行,
并不会推迟到事务提交的时候,
在innodb上建立fk的条件:
1、innodb允许关联到一个index或者一组 columns(第一个column 必须是index)
2、innodb不支持在用户自定义的分区表上建立fk
3、innodb允许fk关联到一个non-unique key .
关联的所涉及到的动作:
1、set default MySQL SERVER 支持,但Innodb不支持。
2、如果子表中对应父表的多条记录,如果constraint type 为restrict,那么innodb是不允许删除
父表当中的这几条记录的。
3、innodb进行级联操作时,使用depth-first 算法,通过行记录的索引进行查找
4、ON UPDATE CASCADE or ON UPDATE SET NULL 不能进行self-referential
可以在 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 中查看 innodb key的具体情况。也可以通过show
engine innodb status 来 进行查看 fk 的错误。
InnoDB 中foreign key使用注意事项
原创文章标签 Innodb foreign key 文章分类 数据库
©著作权归作者所有:来自51CTO博客作者位鹏飞的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:MySQL复制之时区问题
下一篇:MySQL 处理非法数据
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
(mysql)Foreign key的使用 InnoDB
1)外键的使用:外键的作用,主要有两个:一个是让数据库来很大的麻烦.因为数据库
mysql 数据库 脚本 null 外键 -
缓存使用中的注意事项
一、缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数
缓存穿透 缓存并发 缓存失败 多级缓存 缓存过期 -
dnsmasq使用注意事项
DNS服务器
重启 dns服务器 配置文件