我正在使用插入/更新触发器来更新第二个表的列Price
。
插入触发器似乎工作正常,但是当我尝试更改SSMS中的单个记录时,我收到错误:
更新或删除的行值不会成行 唯一的或他们改变多行(2行)。
这是我的更新触发器:
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
我需要按Material-Number进行分组,因为表tabSparePartMasterData_Temp
中插入了多余的行,我只用它来更新tabSparePart
中的Sparepart-Price。但是我假设小组将整理重复项(任何副本的价格相同)。
插入/更新的记录“MaterialNumber
可能无法在tabSparepart
中使用。在这种情况下,应该“跳过”此记录。 INNER JOIN
是否考虑到了这一点?
答案 0 :(得分:5)
尝试将SET NOCOUNT ON
添加到触发器
此错误看起来不像SQL错误,我猜测客户端代码因触发器中的第二次更新而感到困惑。
编辑:这个错误可能是由SSMS中的数据网格视图造成的。
这不是我想的SQL消息:它是一个SSMS是愚蠢的消息
看到这些都说“学会写SQL”
对此说,SQL Server 2005中有一个KB article错误...