我想要做的是从父表中删除一行以将数据保存在子表中。
这意味着,如果我有一个表部门,即包含两列的父表 - depNo
和depName
,以及一个包含三列的子表 - emNo
,{{1 }和emName
。
我希望能够删除父表中的行,但要将其保留在子表中(在我的情况下,它与许可证连接并且最好跟踪它,即使用户也是如此)已删除)。
我猜depNo (FK)
不起作用,因为如果我尝试删除父表中的行,它会给我一个错误。
ON DELETE NO ACTION
和CASCADE
并不好。
SET NULL
- 它无法正常工作,因为我无法创建默认值 - 它可能会有所不同(并且100%肯定会有)。
任何想法如何制作?
答案 0 :(得分:2)
保持包含原始值的外键列的子数据的唯一方法是删除外键约束,冒着添加不一致数据的风险。
我建议创建一个没有外键约束的新表,并在删除之前将子行复制到它。