-2
我使用以下代碼更新或從一個表插入記錄到另一個表,但插入語句不會在重複記錄時跳過。我怎樣才能繞過呢?TSQL合併:<WHEN NOT MATCHED>不會跳過重複
我收到以下錯誤消息。我想跳過重複記錄,並插入新
消息2627,級別14,狀態1,第6行違反PRIMARY KEY約束 'PK_MIBOMD_KEY_0' 的。不能在對象 '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否,因爲'[whl]'上的主鍵是'ItemID'和'PartID'。只有多個或重複的「商品ID」,但是「商品ID +零件ID」是唯一的 – user6305775
@tarheel否,因爲[whl]上的主鍵是ItemID和PartID。只有多個或重複的項目ID,但ItemID + Part ID是唯一的 – user6305775