Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 什么时候启用“删除级联”无效?_Mysql_Cascade_Cascading Deletes - Fatal编程技术网

Mysql 什么时候启用“删除级联”无效?

Mysql 什么时候启用“删除级联”无效?,mysql,cascade,cascading-deletes,Mysql,Cascade,Cascading Deletes,我有一个父表,比如说a和一个子表,比如说B和B引用了a的主键 因此,大多数人在从父级A中删除时,都会使用on delete cascade来修改表。 我的问题是:是否有我不需要“删除级联”的情况的示例? 在表维护/恢复期间,DBA可能会暂时关闭delete cascade,以便清空和重新加载父表,而不会损坏/影响表外的数据。我不喜欢Marc B的示例,因为产品通常不会是某个类别的“子类”。产品和类别可以重叠,具有多对多关系 在没有父级的情况下,数据仍然有用的情况下,我将ON DELETE设置为N

我有一个父表,比如说a和一个子表,比如说B和B引用了a的主键 因此,大多数人在从父级A中删除时,都会使用on delete cascade来修改表。 我的问题是:是否有我不需要“删除级联”的情况的示例?
在表维护/恢复期间,DBA可能会暂时关闭delete cascade,以便清空和重新加载父表,而不会损坏/影响表外的数据。

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

在没有父级的情况下,数据仍然有用的情况下,我将ON DELETE设置为NULL

例如

假设您有一个
translations
表,其中包含列
id
translation\u category
from\u text
to\u text

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

即使您碰巧删除了一个
translation\u类别
父记录,该数据仍然可能有用。所以我会在那里使用DELETE SET NULL


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

电子商务系统,您可以删除一个类别,该类别将删除该类别中的所有产品,并从以前下的任何订单中删除这些产品。“哎呀”