【发布时间】:2012-04-05 19:30:51
【问题描述】:
The MSDN claims that the order is:
- 子表:删除记录。
- 父表:插入、更新和删除记录。
- 子表:插入和更新记录。
我对此有意见。
示例:ParentTable 有两条记录 parent1(Id : 1) 和 parent2(Id : 2)
ChildTable 有一条记录 child1(Id : 1, ParentId : 1)
如果我们将 child1 更新为具有新的父 parent2,然后我们删除 parent1。
- 我们在子表中没有要删除的内容
- 我们删除了 parent1:我们打破了约束,因为孩子仍然附加到 parent1,除非我们先更新它。
那么正确的顺序是什么,MSDN 在这个问题上是否错误?
我个人的想法是
- 子表:删除记录。
- 父表:插入、更新记录。
- 子表:插入和更新记录。
- 父表:删除记录。
但问题是,由于可能存在唯一约束,我们必须始终在添加新记录之前删除表中的记录...所以我现在没有将数据提交到数据库的解决方案。
编辑:感谢您的回答,但您的极端情况是我的日常情况......我选择了禁用约束的丑陋解决方案,然后更新数据库并重新启用约束。我仍在寻找更好的解决方案..
【问题讨论】:
-
这是 ms sql server 吗?还是我错过了标签。有趣的问题 +1
-
它是 SqlServer 2008,但我认为它非常独立于 DBMS!
-
我认为孩子改变父母是一种不寻常的情况。
标签: c# .net sql dataset foreign-keys