Masz dwie możliwości odpowiedzi na swoje pytanie:
1- Użyj polecenia aktualizacji w wyzwalaczu.
ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
ON [dbo].[SCHEDULE]
AFTER UPDATE
AS BEGIN
SET NOCOUNT ON;
IF UPDATE (QtyToRepair)
BEGIN
UPDATE SCHEDULE
SET modified = GETDATE()
, ModifiedUser = SUSER_NAME()
, ModifiedHost = HOST_NAME()
FROM SCHEDULE S INNER JOIN Inserted I
ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
WHERE S.QtyToRepair <> I.QtyToRepair
END
END
2- Użyj opcji Połącz między wstawioną i usuniętą tabelą
ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
ON [dbo].[SCHEDULE]
AFTER UPDATE
AS BEGIN
SET NOCOUNT ON;
UPDATE SCHEDULE
SET modified = GETDATE()
, ModifiedUser = SUSER_NAME()
, ModifiedHost = HOST_NAME()
FROM SCHEDULE S
INNER JOIN Inserted I ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
INNER JOIN Deleted D ON S.OrderNo = D.OrderNo and S.PartNumber = D.PartNumber
WHERE S.QtyToRepair <> I.QtyToRepair
AND D.QtyToRepair <> I.QtyToRepair
END
Gdy używasz polecenia aktualizacji dla tabeli SCHEDULE
i ustaw QtyToRepair
Kolumna do nowej wartości, jeśli nowa wartość jest równa starej wartości w jednym lub wielu wierszach, rozwiązanie 1 aktualizuje wszystkie zaktualizowane wiersze w tabeli harmonogramu, ale rozwiązanie 2 aktualizuje tylko te wiersze harmonogramu, których stara wartość nie jest równa nowej wartości.