2

SqlBulkCopyクラスを使用して一括レコードを挿入auto-incrementしていますが、その値の助けを借りて子テーブル (外部キー) を操作して挿入を行うため、新しく生成された値 (主キーが子テーブルで外部キーを再生) が必要です。

明確な画像を取得するには、以下の例に従ってください。

ソース テーブル: テーブル StagingTable を作成します (personName varchar(50)) insert into StaginTable values('Test1') .. .. .. insert into StaginTable values('Test10,000')

ターゲット テーブル:テーブル TargetTable を作成します (personId int identity(1,1), personName varchar(50)) insert into TargetTable values('Already1') .. .. insert into TargetTable values('Already10')

現在、TargetTable に personId (1 から 10) を持つ 10 レコードを含む 10 レコードがあるので、私の質問は StagingTable から TargetTable に 10,000 レコードを挿入し、それを 10,010 レコードにすることです。その間、10 個の ID 値を除外することで、10,000 個の一意の ID 値のみが必要です。 SQL Server 2012 のマージ コンセプトの助けを借りて。

プロシージャ Merge_GetNewIdentityValues As MERGE TargetTable AS T USING StagingTable AS S ON 1 != 1 を作成します。-- ID フィールドの値を取得 [新しく挿入されたもの]

これをどのように並行して処理できますか? 「挿入された」キーワードが別のコンテキストで再生されるか、異なるユーザーが同じストアド プロシージャを呼び出すために使用される単一のコンテキストで再生されるか

ありがとう、S.Venkatesh

4

0 に答える 0