我正在使用insert-/update觸發器更新第二個表的列Price
。使用GROUP BY更新觸發器
插入觸發器似乎完美地工作,但是當我嘗試改變SSMS一個記錄,我得到一個錯誤:
The row value(s) updated or deleted either do not make the row unique or they alter multiple rows(2 rows).
這是我的更新觸發:
CREATE TRIGGER [dbo].[trgUpdateMasterData] ON [dbo].[tabSparePartMasterData_Temp]
AFTER UPDATE
AS
UPDATE tabSparePart
SET Price = MD.Price
FROM tabSparePart INNER JOIN
(
SELECT inserted.[Material Number (SAP)] AS MaterialNumber, inserted.Price
FROM inserted
GROUP BY [Material Number (SAP)], inserted.Price
) MD
ON tabSparePart.SparePartName = MD.MaterialNumber
我需要按物料編號進行分組,因爲有多餘行插入tabSparePartMasterData_Temp
表中,我只用它來更新tabSparePart
中的備件價格。但是我認爲小組會根據重複的情況來整理(價格與任何重複相同)。
插入/更新記錄'MaterialNumber
在tabSparepart
中可能不可用。在這種情況下,這個記錄應該被「跳過」。 INNER JOIN
是否考慮到了這一點?
什麼產生錯誤信息?它看起來不像SQL ... – gbn
對'(tabSparePart.Price)'或'(tabSparePart.SparePartName,tabSparePart.Price)'有一個偶然的唯一約束嗎?如果有兩個或更多相同的'tabSparePart.SparePartName',則更新可能違反約束條件,也許這就是實際發生的情況。 –
@gbn:SQL-Server Management-Studio(SSMS)當我嘗試使用觸發器更改表中的價格值時。 –