我有表A包含父/子記錄。我有引用表A的表B.該外鍵未被強制執行。我正在做批量刪除/插入來更新子記錄以指向正確的父項。這將分配子記錄新的主鍵,我需要也在表B中更新。批量刪除/插入後更新外鍵表引用?
有沒有辦法做到這一點,而不使用遊標或按行處理行?
我有表A包含父/子記錄。我有引用表A的表B.該外鍵未被強制執行。我正在做批量刪除/插入來更新子記錄以指向正確的父項。這將分配子記錄新的主鍵,我需要也在表B中更新。批量刪除/插入後更新外鍵表引用?
有沒有辦法做到這一點,而不使用遊標或按行處理行?
你可以發佈一些示例數據,以及它應該如何糾正?沒有看到實際的表格模式,我只能做出一些假設,所以這可能無法完美工作:
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
注意我實際上是刪除表A中的行,然後重新添加它。 – Kenoyer130 2013-04-22 17:11:41
是否真的需要先刪除行?似乎你可以更新它們,或者我誤解了這個問題。 – McCee 2013-04-22 17:15:52
是否有特定原因觸發器無法使用?您的批量更新是否爲未記錄的操作? – 2013-04-22 16:12:28
其一次性補丁腳本。 – Kenoyer130 2013-04-22 16:58:35