MySQL 中针对 CASCADE、RESTRICT、NO ACTION、SET NULL、SET DEFAULT 的删除行为在 MySQL 中的相应配置是什么
What are the corresponding configs in MySQL for deletion behaviors in PostgreSQL for CASCADE, RESTRICT, NO ACTION, SET NULL, SET DEFAULT
我对 Postgres 及其外键引用的删除行为有经验(引自 PostgreSQL docs):
NO ACTION
(默认):如果在检查约束时仍然存在任何引用行,则会引发错误
RESTRICT
:防止删除引用的行。这两种选择之间的本质区别在于 NO ACTION
允许将检查推迟到交易的后期,而 RESTRICT
则不允许。
CASCADE
:删除引用行时,引用它的行也应自动删除。
SET NULL
:当引用的行被删除时,导致引用列设置为 NULL
。
SET DEFAULT
:当引用的行被删除时,将引用列设置为其默认值。请注意,这些并不能成为您不遵守任何约束的借口。例如,如果操作指定 SET DEFAULT
但默认值不满足外键,操作将失败。
在MySQL中是否也有针对所有这些行为的相应配置?我正在浏览 docs 但没有找到任何有用的东西...
您可以在此处找到 mysql 文档:
https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
我对 Postgres 及其外键引用的删除行为有经验(引自 PostgreSQL docs):
NO ACTION
(默认):如果在检查约束时仍然存在任何引用行,则会引发错误RESTRICT
:防止删除引用的行。这两种选择之间的本质区别在于NO ACTION
允许将检查推迟到交易的后期,而RESTRICT
则不允许。CASCADE
:删除引用行时,引用它的行也应自动删除。SET NULL
:当引用的行被删除时,导致引用列设置为NULL
。SET DEFAULT
:当引用的行被删除时,将引用列设置为其默认值。请注意,这些并不能成为您不遵守任何约束的借口。例如,如果操作指定SET DEFAULT
但默认值不满足外键,操作将失败。
在MySQL中是否也有针对所有这些行为的相应配置?我正在浏览 docs 但没有找到任何有用的东西...
您可以在此处找到 mysql 文档:
https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT