0

我有一个父表说 A 和一个孩子说 B 和 B 引用 A 的主键,所以大多数人在从父 A 删除时会使用删除级联来修改表。我的问题是:是否有任何情况的例子我不需要'删除级联'?什么时候用不了?

4

2 回答 2

1

我不喜欢 Marc B 的示例,因为产品通常不会是某个类别的“子项”。产品和类别可以重叠,具有多对多的关系。

在没有父级数据仍然有用的情况下,我有 ON DELETE SET NULL 。

例如

假设您有一个translations包含列idtranslation_categoryfrom_textto_text

该表包含各种文本到文本的翻译。这translation_category是一个外键,它引用了主要使用翻译的特定字段。但是您也可以执行忽略该键的查询以获取公共from_textto_text值的计数,因为它们可能会针对不同的translation_category值重复。

即使您碰巧删除了其中一条translation_category父记录,该数据仍然可能有用。所以我会在那里使用 ON DELETE SET NULL 。

当然,可以更改相同的模式以放入translation_category多对多链接表,但相同的原则仍然适用。

于 2012-11-17T04:18:59.873 回答
0

在表维护/恢复期间,DBA 可能会暂时关闭删除级联,以便可以清空和重新加载父表,例如,不会损坏/影响表外的数据。

于 2012-11-17T04:17:54.540 回答