MySQL的默认ON DELETE行为是什么?

我正在尝试解析MySQL 文档。他们可能会更清楚。他们似乎在说的是,有五种可能性:SET NULL,NO

ACTION,RESTRICT,CASCADE和SET DEFAULT。

NO ACTION和RESTRICT会执行相同的操作(防止破坏FK的任何数据库更改),并且该操作是默认操作,因此,如果省略ON DELETE子句,则表示NO

ACTION(或RESTRICT -是相同的操作)。

SET NULL允许删除父行,将FK设置为​​NULL。

CASCADE删除子行。

SET DEFAULT应该永远不被使用。

这或多或少是正确的吗?

回答:

是的,这是正确的:

:[…] InnoDB拒绝父表的删除或更新操作。

:拒绝父表的删除或更新操作。指定RESTRICT(或NO ACTION)与省略ON DELETE或ON

UPDATE子句相同。[…]

显然NO ACTIONRESTRICT是同义词。此外,由于每当没有ON DELETE / UPDATE子句时都使用它们,因此这是默认行为。

:从父表中删除或更新该行,并将子表中的一个或多个外键列设置为NULL。[…]

如果未将外部列声明为NOT NULL(或InnoDB将不允许删除或更新),则将其设置为NULL。

:从父表中删除或更新行,并自动删除或更新子表中匹配的行。[…]

级联删除(或更新)外部列。

:解析器可以识别此操作,但是InnoDB拒绝包含ON DELETE SET DEFAULT或ON UPDATE SET

DEFAULT子句的表定义。

因此,基本上您不能使用该选项。

以上是 MySQL的默认ON DELETE行为是什么? 的全部内容, 来源链接: utcz.com/qa/420279.html

回到顶部