親/子レコードを含むテーブル 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