Bạn có hai cách cho câu hỏi của mình:
1- Sử dụng Lệnh cập nhật trong Trình kích hoạt của bạn.
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- Sử dụng Tham gia giữa bảng đã chèn và bảng đã xóa
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
Khi bạn sử dụng lệnh cập nhật cho bảng SCHEDULE
và Đặt QtyToRepair
Cột thành giá trị mới, nếu giá trị mới bằng giá trị cũ trong một hoặc nhiều hàng, giải pháp 1 cập nhật tất cả hàng đã cập nhật trong bảng Lịch biểu nhưng giải pháp 2 chỉ cập nhật các hàng có giá trị cũ không bằng giá trị mới.