FOR
Ve AFTER
tetikleyiciler arasındaki fark nedir ?
FOR
Ve AFTER
tetikleyiciler arasındaki fark nedir ?
Yanıtlar:
Fark yok, aynı şeyi yapıyorlar.
CREATE TRIGGER trgTable on dbo.Table FOR INSERT,UPDATE,DELETE
Aynıdır
CREATE TRIGGER trgTable on dbo.Table AFTER INSERT,UPDATE,DELETE
Bir INSTEAD OF
tetikleyici farklıdır ve ekten önce ve onun yerine tetiklenir ve uygun değerleri temel tablolara eklemek için görünümlerde kullanılabilir.
@Ben kesinlikle haklı.
İşte SQL Server Tetikleyicilerini Keşfetme MSDN makalesi
Makaleden bir paragraf:
Bu sözdizimi, SQL Server'ın eski sürümlerinde de kabul edilebilir. Ancak, şimdi SQL Server 2000'de iki tür tetikleyici olduğuna göre, FOR tetikleyicilerine AFTER tetikleyiciler olarak atıfta bulunmayı tercih ediyorum. Bu nedenle, bu makalenin geri kalanında AFTER veya INSTEAD OF tetikleyicilerine değineceğim.
Daha önce gördüğünüz AFTER tetikleyicisi gibi, bu tetikleyici soyad alanında değişiklik yapılmasını engeller. Ancak, bu iş kuralını önceki örnekten farklı bir şekilde uygulamaktadır. INSTEAD OF tetikleyicisi UPDATE ifadesi yerine tetiklendiğinden, INSTEAD OF tetikleyicisi daha sonra iş kuralı testinin başarılı olup olmadığını değerlendirir. İş kuralı testi başarılı olursa, güncellemenin gerçekleşmesi için INSTEAD OF tetikleyicisinin açıkça UPDATE ifadesini yeniden çağırması gerekir.
AFTER, DML tetikleyicisinin yalnızca tetikleyici SQL deyiminde belirtilen tüm işlemler başarıyla yürütüldüğünde tetiklendiğini belirtir. Bu tetikleyici etkinleşmeden önce tüm bilgi basamaklı eylemler ve kısıtlama denetimleri de başarılı olmalıdır. FOR, belirtilen tek anahtar sözcük olduğunda AFTER varsayılandır.
SONRA tetikleyiciler görünümlerde tanımlanamaz.
INSTEAD OF Tetikleyen SQL ifadesi yerine DML tetikleyicisinin yürütüldüğünü, dolayısıyla tetikleme ifadelerinin eylemlerini geçersiz kıldığını belirtir. INSTEAD OF, DDL veya oturum açma tetikleyicileri için belirtilemez.
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql