我正在使用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)当我尝试使用触发器更改表中的价格值时。 –