如何仅删除父表中的行,该表由子表中的Foregin键引用

09Q*_*534 0 sql foreign-keys foreign-key-relationship

我想从父表中删除行/元组,但由于它在其子表中具有FOREIGN KEY引用,因此抛出了错误消息。

但是,就我而言,我只想从父表中删除记录,并在子表中维护数据

有可能实现这一目标吗?

我知道的用法ON DELETE CASCADE,但是我想知道我描述的secenario是否有解决方案?

Alm*_* Do 5

您的数据中有些协议是可能的。要维护子表数据,您必须做ON DELETE SET NULL。这将保留数据,但将FK设置为NULLvalue(在子表中)。那是因为数据完整性:尽管您可以保留数据,但就强制约束而言,FK 不能引用父表的不存在的行FK。因此,将以此设置NULL

如果要“保存” FK的值,则绝对不要使用FK,因为这种行为违反了FK的含义。因此,请不要使用该约束,而要注意可能的完整性失败。