Tôi có một trình kích hoạt bảng trên CẬP NHẬT và CHERTN để thêm một hàng vào một bảng khác. Nó chỉ cần thêm một hàng nếu một trong bốn cột được thay đổi. Tôi đã thử sử dụng IF UPDATE (col) để kiểm tra các thay đổi nhưng nó có một điểm mù. Nó chỉ kiểm tra một số giá trị xuất hiện. Tôi cần đi sâu hơn, tôi cần so sánh các giá trị cũ và mới để thấy sự thay đổi thực sự đã xảy ra. Nó phải hoạt động với cả CHERTN và CẬP NHẬT.
Trong trường hợp CẬP NHẬT thật dễ dàng vì cả hai bảng được chèn và xóa đều có các giá trị tôi có thể so sánh trong trình kích hoạt. Tuy nhiên, đối với INSERT chỉ có bảng chèn có giá trị. Bởi vì tôi cần tất cả những thứ này trong cùng một trình kích hoạt, làm thế nào để tôi xử lý trường hợp INSERT đó?
Đây là kịch bản kích hoạt tôi muốn sửa đổi:
ALTER TRIGGER [dbo].[trATPerson_alter]
ON [mydb].[dbo].[AT_Person]
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
-- Not all updates require a push
IF (UPDATE([First_Name]) OR UPDATE([Last_Name]) OR UPDATE([JobCode]) OR UPDATE([Inactive]))
BEGIN
INSERT INTO [mydb].[dbo].[AT_Person_To_Push] (
[Facility],
[VendorID],
[Person_code],
[First_Name],
[Last_Name],
[JobCode],
[Alink],
[Inactive]
)
SELECT [Facility],
[VendorID],
[Person_code],
[First_Name],
[Last_Name],
[JobCode],
[Alink],
[Inactive]
FROM inserted
END
END