Обновление триггера с помощью GROUP BY

Я использую триггеры insert//update для обновления второго столбца таблицы 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 добавлены избыточные строки, которые я использую только для обновления Sparepart-Price в tabSparePart. Но я предположил, что группа будет сортировать дубликаты (цена одинакова для любого дубликата).

Возможно, что вставленные/обновленные записи 'MaterialNumber недоступны в tabSparePart. В этом случае эта запись должна быть "пропущена". Учитывает ли это INNER JOIN?

Ответы

Ответ 1

Попробуйте добавить SET NOCOUNT ON к триггеру

Эта ошибка не похожа на ошибку SQL, и я предполагаю, что код клиента запутывается вторым обновлением в триггере.

Изменить: эта ошибка может быть вызвана тем, что вид сетки данных в SSMS является глупым.

Это не сообщение SQL, как я думал: это SSMS - это глупое сообщение

Посмотрите на все, что говорит "научиться писать SQL"

Сказав, что есть статья в KB об ошибке в SQL Server 2005...