Sha*_*deh 15 mysql sql foreign-keys
我正在尝试在列上创建 FK,现在我在想什么时候应该使用ON DELETE RESTRICT
?(或者ON UPDATE RESTRICT
)。不是和一样吗NO ACTION
?
这ON DELETE RESTRICT
意味着如果存在引用给定父行值的子行,则无法删除该父行。如果父行没有引用子行,则可以删除该父行。无论如何,它的定义是外键的默认行为。
我错过了什么吗?
唯一的区别是当您将约束定义为可延迟且具有初始延迟或初始立即模式时。
NO ACTION:在标准 SQL 中,NO ACTION 表示不执行任何操作,即如果引用的表中存在相关外键值,则不允许继续尝试删除或更新主键值。InnoDB拒绝对父表的删除或更新操作。
RESTRICT:拒绝对父表的删除或更新操作。指定 RESTRICT(或 NO ACTION)与省略 ON DELETE 或 ON UPDATE 子句相同。(有些数据库系统有延迟检查,NO ACTION就是延迟检查。在MySQL中,外键约束是立即检查的,所以NO ACTION和RESTRICT是一样的。)
请参阅: SQL SET CONTRAINS