次のコードを使用して1つのテーブルから別のテーブルへレコードを更新または挿入しましたが、重複レコードの場合は挿入ステートメントはスキップしません。どのように私はそれをバイパスできますか?TSQLマージ:<WHEN NOT MATCHED>は重複をスキップしません
次のエラーが発生します。私は、重複したレコードをスキップして、PRIMARY KEY 制約 'PK_MIBOMD_KEY_0' の新しい
メッセージ2627、レベル14、状態1、行6違反を挿入したいです。オブジェクト 'dbo.MIBOMD'に重複キーを挿入できません。重複するキー値は(、0、1)です。ステートメントには が終了しました。
MERGE [MIBOMD] AS TARGET
USING [whl] AS SOURCE
ON (TARGET.[bomItem] = SOURCE.ItemID AND TARGET.bomEntry = SOURCE.bomEntry AND TARGET.bomRev = SOURCE.rev)
WHEN MATCHED AND TARGET.bomEntry = SOURCE.bomEntry
AND TARGET.partId <> SOURCE.partid THEN
UPDATE SET TARGET.partId = SOURCE.partid
WHEN NOT MATCHED BY TARGET THEN
INSERT (partId,bomEntry, srcLoc, qty, lead)
VALUES (SOURCE.partid, SOURCE.bomEntry, 'R14SDS', SOURCE.qty, SOURCE.lead);
ソース( '[whl])に重複がないことを確認してください。 – tarheel
@tarheel no、 '[whl]の主キーは' ItemID'と 'PartID'です。 [whl]の主キーはItemIDとPartIDなので、 'Item ID'だけが複数あるか重複していますが、' ItemID + Part ID'は一意です。 – user6305775
@tarheel noです。複数のまたは重複したアイテムIDがあるだけですが、ItemID +パーツIDは一意です – user6305775