平时写到自己的项目,使用Navicat for mysql 先设计模型,看到外键删除和更新设置有四个选项如下图,
重新回顾一下这个四个删除方式,删除和更新有四种设置方式 。
CASCAD、SET NULL、NO ACTION、RESTRICT的的区别是:
- cascade:级联,当父表更新、删除,子表会同步更新和删除
- set null:置空,当父表更新、删除的时候,子表会把外键字段变为null,所以这个时候设计表的时候该字段要允许为null,否则会出错
- restrict:父表在删除和更新记录的时候,要在子表中检查是否有有关该父表要更新和删除的记录,如果有,则不允许删除个更改
- no action:和restrict一样