InnoDB 中foreign key使用注意事项

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 的错误。





本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1173383,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值