【发布时间】:2020-02-26 17:27:45
【问题描述】:
我有使用 Postgres 及其对外键引用的删除行为的经验(引用自 PostgreSQL docs):
-
NO ACTION(默认):如果在检查约束时任何引用行仍然存在,则会引发错误 -
RESTRICT:防止删除引用的行。这两种选择的本质区别在于NO ACTION允许将检查推迟到交易的后期,而RESTRICT则不允许。 -
CASCADE:当引用的行被删除时,引用它的行也应该被自动删除。 -
SET NULL:当被引用的行被删除时,导致引用列设置为NULL。 -
SET DEFAULT:删除引用的行时,将引用列设置为其默认值。请注意,这些并不能成为您遵守任何约束的借口。例如,如果某个操作指定了SET DEFAULT,但默认值不满足外键,则操作将失败。
MySQL 中的所有这些行为是否也有相应的配置?我正在查看docs,但没有发现任何有用的信息...
【问题讨论】:
-
太棒了,非常感谢!如果您将此添加为答案,我会接受它,以便您获得积分! :)
标签: mysql sql postgresql cascading-deletes