COMMIT veya rollback hareket içeren dml Tetikleyicileri kullanma

Sürümlerinde SQL Server daha SQL Server sürüm 7.0, hareket sayısı artırılıyor içinde bir deyim yalnızca zaman hareket sayısı 0 başındaki deyim.De SQL Server sürüm 7.0, hareket sayısı her zaman artırılıyor, bağımsız olarak hareket sayısı başındaki deyim.Bu nedenle Tetikleyicileri @@ trancount döndüren değer içinde olandan daha sonraki sürümlerde daha düşük olabilir SQL Server 7.0.

Sonraki sürümlerde TAMAMLAMA hareket veya iş TAMAMLAMA bildirimi de bir tetikleyici yürütülür ve hiçbir karşılık gelen doğrudan ya da dolaylı BEGIN TRANSACTION deyim başlangıcında tetikleyicinin kullanıcıların da daha farklı davranış görebilirsiniz SQL Server sürüm 7.0.HAREKET TAMAMLAMA veya iş TAMAMLAMA ifadeleri de tetikleyici yerleştirme önermiyoruz.

Bir toplu işleminden COMMIT veya rollback İŞLEMİNİ ifadeleri içeren tetikleyici çalıştırıldığında tüm toplu iş iptal edin.De SQL Server 2008 ve SQL Server 2005, ayrıca bir hata döndürülür.

Aşağıdaki örnekte, INSERT deyim, rollback İŞLEMİNİ içeren DML tetikleyicisi harekete DELETE deyim toplu iş iptal edildi çünkü değil yürütüldü.

/* Start of Batch */
INSERT employee VALUES ('XYZ12345M', 'New', 'M', 'Employee', 1, 1, '9952', '6/1/95') -- Causes trigger to fire and ROLLBACK TRANSACTION.
DELETE employee WHERE emp_id = 'PMA42628M'
GO

Tetikleyici rollback TRANSACTION deyimlerini içeren kullanıcı tanımlı bir işlem içinde oluşturulur, rollback İŞLEMİNİ tüm hareket geri alınır.Aşağıdaki örnekte, INSERT deyim, rollback İŞLEMİNİ içeren tetikleyici harekete UPDATE deyim da toplu geri:

/* Start of Transaction */
BEGIN TRANSACTION
UPDATE employee SET hire_date = '7/1/94' WHERE emp_id = 'VPA30890F'
INSERT employee VALUES ('XYZ12345M', 'New', 'M', 'Employee', 1, 1, '9952', '6/1/95') -- Causes trigger to fire and ROLLBACK TRANSACTION.