UPDATE ve başka bir tabloya bir satır ekler INSERT bir tablo tetikleyicisi var . Yalnızca dört sütundan biri değiştirildiğinde satır eklemesi gerekir. Değişiklikleri test etmek için IF UPDATE (col) kullanarak denedim ama kör bir nokta var. Sadece bazı değerlerin geldiğini test eder. Daha derine inmem gerekiyor, gerçek bir değişiklik olduğunu görmek için eski ve yeni değerleri karşılaştırmam gerekiyor. INSERT ve UPDATE ile birlikte çalışması gerekir.
Hem UPDATE hem de silinen tabloların tetikleyici içinde karşılaştırabileceğim değerlere sahip olması nedeniyle bu kolay bir UPDATE durumunda. Ancak, INSERT için yalnızca ekleme tablosunun değerleri vardır. Tüm bunlara aynı tetikleyicide ihtiyacım olduğu için, INSERT vakasını nasıl ele alabilirim?
İşte değiştirmek istediğiniz tetikleyicinin komut dosyası:
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