我有一个父表说A和一个孩子说B和B引用A的主键 所以大多数人会在删除级联时使用它们从父A中删除时修改表。 我的问题是:是否有任何我不需要'删除级联'的情况的例子? 什么时候使用它没用?
答案 0 :(得分:1)
我不喜欢Marc B的例子,因为产品通常不会属于某类别的“孩子”。产品和类别可以重叠,具有多对多的关系。
在没有父项的数据仍然有用的情况下,我有ON DELETE SET NULL。
E.g。
假设您有一个translations
表,其中包含id
,translation_category
,from_text
,to_text
该表包含各种文本到文本的翻译。 translation_category
是一个外键,它引用主要使用翻译的特定字段。但是,您也可以执行忽略该键的查询,以获取常见from_text
和to_text
值的计数,因为它们可能会针对不同的translation_category
值重复。
即使您碰巧删除了一个translation_category
父记录,该数据仍然有用。所以我会在那里使用ON DELETE SET NULL。
当然,可以更改相同的模式以将translation_category
放入多对多链接表中,但仍然适用相同的原则。
答案 1 :(得分:0)
在表维护/恢复期间,DBA可能会暂时关闭删除级联,以便可以清空和重新加载父表,例如,不会损坏/影响表外的数据。