外键约束
约束类型 | 解释 |
---|---|
CASCADE | 级联操作,级联删除或级联更新 |
NO ACTION | 在修改或者删除完以后去检查从表中是否有对应的数据;如果有,拒绝操作 |
RESTRICT | 在修改或者删除之前去检查从表中是否有对应的数据;如果有,拒绝操作级联删除 |
SET NULL | 在删除或更新的时候置为NULL |
注:MySQL中,外键约束都会立即检查,所以 RESTRICT 和 NO ACTION 两者等价
外键踩坑集
Can’t create table ‘xxxx’ (errno: 121)
外键名字冲突了,换一个名字,注意不要重复
参考:外键命名规则
cannot add or update a child row…
- 使用的引擎要相同(在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束)
- 字段类型要相同
- 表中原有的数据是否和外键匹配
to be continued …