什么时候删除级联无用?

时间:2012-11-17 04:03:03

标签: mysql cascade cascading-deletes

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

2 个答案:

答案 0 :(得分:1)

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

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

E.g。

假设您有一个translations表,其中包含idtranslation_categoryfrom_textto_text

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

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

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

答案 1 :(得分:0)

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