Я использую триггеры 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
?