我有一个将行从一个数据库移动到另一个数据库的过程。由于一些循环外键引用链,我无法从旧数据库中删除行,也无法将它们插入新数据库。
由于整个操作发生在事务1中,我希望 SQL Server 忽略引用完整性失败,直到我调用COMMIT TRANSACTION
。
例如2:
Table: Turboencabulators Table: Marselvanes
========================= =======================
PK TurboencabulatorID int /-> PK MarselvaneID int
^ MarselvanesID int --/ HasGrammeter bit
| PantametricFan varchar(50)
+------------------------------- TurboencabulatorID int
如果我尝试将turboencabulator插入新表中,它会在没有marselvane的情况下失败。颠倒顺序也有同样的问题。
尝试删除旧行时,我无法删除其中一个,直到另一个被删除。
我尝试过做一个n阶段系统,其中插入所有行,并将外键约束下的任何列设置为null。然后我更新所有插入的行,放置正确的缺失值。然后,为了删除源行,我将受FK影响的所有列清空,然后删除实际行。3
我真正喜欢的是只执行我的 T-SQL 操作,并且在我尝试调用 commit 之前让 SQL Server 不告诉我。
笔记
1分布式
2人为的假设
3我不再做