gpt4 book ai didi

sql-server - SQL Server : How to ignore referential integrity until COMMIT?

转载 作者:行者123 更新时间:2023-12-02 23:33:08 25 4
gpt4 key购买 nike

我有一个将行从一个数据库移动到另一个数据库的过程。由于一些循环外键引用链,我无法从旧数据库中删除行,也无法将它们插入新数据库中。

由于整个操作发生在事务中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 操作,并且让 SQL Server 在我尝试调用提交之前不会告诉我。

注释

1分布式
2人为的假设
3我不再这样做了

最佳答案

你可以使用...

ALTER TABLE whatever_table NOCHECK CONSTRAINT ALL 

在开始之前删除约束检查

完成后将其重新打开...

ALTER TABLE whatever_table CHECK CONSTRAINT ALL 

无论如何,这就是我会做的。

-不

关于sql-server - SQL Server : How to ignore referential integrity until COMMIT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com