テーブルのサブセットを同じテーブルに挿入しています。一部のマッピング テーブルにレコードを作成するには、新しく作成された ID PK と一致する古い PK の両方を取得する必要があります。
SQL がそれをサポートする場合、次のようになります。
Create table Test (pk identity, description varchar(10))
Declare @PKVALUES TABLE (NewPK int, OLdPk int)
INSERT INTO Test (description)
OUTPUT INSERTED.PK, Test.PK into @PKVALUES
Select description
From Test
Where ...
しかしもちろん、SQL は INSERT 操作中の FROM テーブルからの値の出力をサポートしていません。
私が遭遇した唯一のセットベースの代替手段は、一時テーブルに新しい PK を作成し、ID 挿入を使用してそれらを Test テーブルに挿入するときに、テーブル全体をロックする必要があります。
これを達成する方法はありますか (一度に 1 つのレコードに頼ったり、テーブル全体をロックしたりする必要はありません)。
ありがとう、イルマー