Cyr*_*don 16 .net c# sql foreign-keys dataset
我有一个问题.
示例:ParentTable有两个记录parent1(Id:1)和parent2(Id:2)
ChildTable有一个记录child1(Id:1,ParentId:1)
如果我们更新child1以获得新的父parent2,然后我们删除parent1.
那么正确的顺序是什么,并且主题上的MSDN是假的?
我个人的想法是
但问题是,由于潜在的唯一约束,我们必须在添加新的之前删除表中的记录...所以我现在没有解决方案将数据提交到我的数据库.
编辑:感谢您的答案,但您的角落案例是我的日常案例......我选择了丑陋的解决方案来禁用约束,然后更新数据库,并重新启用约束.我还在寻找更好的解决方案..
您的 SQL 产品不支持延迟约束检查吗?
如果没有,你可以尝试
删除所有子记录 - 删除所有父记录 - 插入所有父记录 - 插入所有子记录
其中任何 UPDATE 都已分为其组成部分 DELETE 和 INSERT。
这应该在所有情况下都能正常工作,但在可接受的速度下可能没有......
还可以证明这是唯一可以在所有情况下正确工作的方案,因为:
(a) 对父项的关键约束规定父项 DELETES 必须在父项 INSERTS 之前,
(b) 对子项的关键约束规定子项 DELETES 必须在子项 INSERTS 之前,
(c) FK 规定子项 DELETES 必须在父项 DELETES 之前
(d) FK 还规定子插入必须遵循父插入
给定的序列是满足这 4 个要求的唯一可能的序列,并且它还表明,无论如何,对子级的 UPDATE 都会使解决方案变得不可能,因为 UPDATE 意味着“同时”DELETE 加 INSERT。
| 归档时间: |
|
| 查看次数: |
1937 次 |
| 最近记录: |