2013-04-22 63 views
0

我有表A包含父/子記錄。我有引用表A的表B.該外鍵未被強制執行。我正在做批量刪除/插入來更新子記錄以指向正確的父項。這將分配子記錄新的主鍵,我需要也在表B中更新。批量刪除/插入後更新外鍵表引用?

有沒有辦法做到這一點,而不使用遊標或按行處理行?

+0

是否有特定原因觸發器無法使用?您的批量更新是否爲未記錄的操作? – 2013-04-22 16:12:28

+0

其一次性補丁腳本。 – Kenoyer130 2013-04-22 16:58:35

回答

1

你可以發佈一些示例數據,以及它應該如何糾正?沒有看到實際的表格模式,我只能做出一些假設,所以這可能無法完美工作:

select PrimaryKeyField AS RowID, ChildKeyField AS OldChildID, newid() AS NewChildID 
into #UpdateTable 
from TableA 
where SomeConditionToSelectTheChildRecords 

update TableA 
set TableA.ChildKeyField = #UpdateTable.NewChildID 
from TableA 
    inner join #UpdateTable on TableA.PrimaryKeyField = #UpdateTable.RowID 

update TableB 
set TableB.ChildKeyField = #UpdateTable.NewChildID 
from TableB 
    inner join #UpdateTable on TableB.ChildKeyField = #UpdateTable.OldChildID 
+0

注意我實際上是刪除表A中的行,然後重新添加它。 – Kenoyer130 2013-04-22 17:11:41

+0

是否真的需要先刪除行?似乎你可以更新它們,或者我誤解了這個問題。 – McCee 2013-04-22 17:15:52