我有一个父表说 A 和一个孩子说 B 和 B 引用 A 的主键,所以大多数人在从父 A 删除时会使用删除级联来修改表。我的问题是:是否有任何情况的例子我不需要'删除级联'?什么时候用不了?
问问题
84 次
2 回答
1
我不喜欢 Marc B 的示例,因为产品通常不会是某个类别的“子项”。产品和类别可以重叠,具有多对多的关系。
在没有父级数据仍然有用的情况下,我有 ON DELETE SET NULL 。
例如
假设您有一个translations
包含列id
、translation_category
、from_text
、to_text
该表包含各种文本到文本的翻译。这translation_category
是一个外键,它引用了主要使用翻译的特定字段。但是您也可以执行忽略该键的查询以获取公共from_text
和to_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 回答