我有包含父/子记录的表 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