Sie haben zwei Möglichkeiten für Ihre Frage:
1- Verwenden Sie den Update-Befehl in Ihrem Trigger.
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- Verwenden Sie Join zwischen eingefügter Tabelle und gelöschter Tabelle
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
Wenn Sie den Aktualisierungsbefehl für die Tabelle SCHEDULE
verwenden und QtyToRepair
festlegen Spalte auf neuen Wert, wenn der neue Wert gleich dem alten Wert in einer oder mehreren Zeilen ist, aktualisiert Lösung 1 alle aktualisierten Zeilen in der Zeitplantabelle, aber Lösung 2 aktualisiert nur die Zeitplanzeilen, deren alter Wert ungleich dem neuen Wert ist.