使用GROUP BY更新触发器

Tim*_*ter 1 t-sql triggers group-by sql-server-2005

我正在使用插入/更新触发器来更新第二个表的列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
Run Code Online (Sandbox Code Playgroud)

我需要按Material-Number分组,因为有多余的行插入到表中tabSparePartMasterData_Temp,我只用于更新Sparepart-Price tabSparePart.但我假设小组将整理重复(任何重复的价格相同).

插入/更新的记录可能MaterialNumber不可用tabSparepart.在这种情况下,应该"跳过"此记录.是否INNER JOIN考虑到了这一点?

gbn*_*gbn 5

尝试添加SET NOCOUNT ON触发器

此错误看起来不像SQL错误,我猜测客户端代码被触发器中的第二次更新搞糊涂了.

编辑:这个错误可能是由SSMS中的数据网格视图愚蠢造成的.

这不是我想的SQL消息:它是一个SSMS是愚蠢的消息

看到这些都说"学会写SQL"

说,有一篇关于SQL Server 2005中的错误的知识库文章 ......