SQL Server数据库中的ON DELETE NO ACTION约束

时间:2012-11-07 12:34:18

标签: sql-server foreign-keys constraints

我想要做的是从父表中删除一行以将数据保存在子表中。

这意味着,如果我有一个表部门,即包含两列的父表 - depNodepName,以及一个包含三列的子表 - emNo,{{1 }和emName

我希望能够删除父表中的行,但要将其保留在子表中(在我的情况下,它与许可证连接并且最好跟踪它,即使用户也是如此)已删除)。

我猜depNo (FK)不起作用,因为如果我尝试删除父表中的行,它会给我一个错误。

在这种情况下,

ON DELETE NO ACTIONCASCADE并不好。

SET NULL - 它无法正常工作,因为我无法创建默认值 - 它可能会有所不同(并且100%肯定会有)。

任何想法如何制作?

1 个答案:

答案 0 :(得分:2)

保持包含原始值的外键列的子数据的唯一方法是删除外键约束,冒着添加不一致数据的风险。

我建议创建一个没有外键约束的新表,并在删除之前将子行复制到它。