Anda memiliki dua cara untuk pertanyaan Anda :
1- Gunakan Perintah Pembaruan di Pemicu Anda.
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- Gunakan Gabung antara tabel yang disisipkan dan tabel yang dihapus
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
Saat Anda menggunakan perintah pembaruan untuk tabel SCHEDULE
dan Setel QtyToRepair
Kolom ke nilai baru, jika nilai baru sama dengan nilai lama dalam satu atau beberapa baris, solusi 1 memperbarui semua baris yang diperbarui dalam tabel Jadwal tetapi solusi 2 hanya memperbarui menjadwalkan baris yang nilai lama tidak sama dengan nilai baru.