使用GROUP BY更新触发器

时间:2011-08-15 15:57:39

标签: sql-server-2005 tsql triggers group-by

我正在使用插入/更新触发器来更新第二个表的列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是否考虑到了这一点?

1 个答案:

答案 0 :(得分:5)

尝试将SET NOCOUNT ON添加到触发器

此错误看起来不像SQL错误,我猜测客户端代码因触发器中的第二次更新而感到困惑。

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

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

看到这些都说“学会写SQL”

对此说,SQL Server 2005中有一个KB article错误...