批量删除/插入后更新外键表引用?

时间:2013-04-22 16:00:08

标签: sql-server tsql

我有一个包含父/子记录的表A.我有表B引用表A.外键未强制执行。我正在进行批量删除/插入以更新子记录以指向正确的父级。这将为子记录分配我需要在表B中更新的新主键。

有没有办法在不使用游标或逐行处理的情况下执行此操作?

1 个答案:

答案 0 :(得分: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