Geri alma ve saklı yordamları ve Tetikleyicileri tamamlama

Geri alma HAREKETİ veya TAMAMLAMA işlem yürütülürken Transact-SQL deyim saklı yordam veya tetikleyiciyi içinde mümkün, ancak bunu yaparsanız bu nedenle neden hataları.

Saklı yordamları

Bir saklı yordam yordam çalıştırıldığında zamankinden sona erdiğinde @@ trancount farklı bir değer varsa, bilgilendirici hata (266) oluşur.Bu iki şekilde gerçekleşebilir:

  • Bir saklı yordam bir @@ trancount ile 1 veya daha büyük olarak adlandırılır ve rollback İŞLEMİNİ deyim saklı yordam yürütür.@@ trancount azaltır 0 266 hataya neden olur ve zaman saklı yordam tamamlar.

  • Bir saklı yordam olarak adlandırılan bir @@ trancount 1 ile veya büyük ve TAMAMLAMA hareket saklı yordamı yürütür deyim.1 Azaltır @@ trancount 266 hataya neden olur ve zaman saklı yordam tamamlar.Ancak, sonra TAMAMLAMA hareket BEGIN TRANSACTION yürütülürse, hata oluşmaz.

Tetikler

Tetikleyici yokmuş gibi olağanüstü bir işlem etkin tetik çalıştırıldığında çalışır.Bu tetikleyici tetikleme deyim bir örtülü olup olmadığı doğrudur ya da belirtik işlem.

otomatik yürütme modu çalışan bir deyim başladığında bir zımni BAŞLAYAN bir hatayla karşılaşırsa, deyim tarafından oluşturulan tüm değişiklikler kurtarma izin verecek biçimde hareket vardır.Bu hareketin etkili değildir diğer tarafta ima deyims toplu iş iş iş çünkü kaydedilmiş veya toplu iş iş ne zaman geri deyim tamamlar.Başka bir örtülü bir tetikleyici çağrıldığında hala etkin, ancak hareketidir.

Tetikleyici çalıştırıldığında bir örtük işlem başlatılır.Tetikleyici yürütme ve @@ trancount tamamlarsa, 0 = 3609 hata oluşur ve toplu iş iş iş sonlandırıldı.BEGIN TRANSACTION deyim de tetikleyici verildiyse, iç içe geçmiş bir hareket oluşturur.HAREKET TAMAMLAMA deyim yürütüldüğünde, bu durumda, yalnızca iç içe geçmiş hareket için deyim geçerli olacaktır.

De tetikleyici rollback İŞLEMİNİ kullanırken, aşağıdaki davranışını dikkate alın:

  • Tüm veri değişiklikleri geçerli hareket noktası alınıyor, geri, herhangi bir tetikleyici tarafından yapılan da dahil olmak üzere yapılan.

  • Tetikleyici rollback deyim sonra kalan tüm deyimleri yürütme devam eder.Bu ifadeler birini verileri değiştirirseniz, değişiklikler geri alınır değil.

  • Tetikleyicinin bir bir geri alma kapatır ve bildirilen ve tetikleyici harekete deyim içeren toplu iş içinde açılan tüm imleçler kaldırır.Bu bildirilmiş ve tetikleyici harekete toplu iş iş adlandırılan saklı yordamlarda açılır imleçler içerir.Yalnızca tetikleyici harekete toplu iş için önce toplu olarak bildirilen imleçler kapatılır.Ancak, statik veya küçük harf duyarlı imleçler açık kalması durumunda:

    • CURSOR_CLOSE_ON_COMMIT kapalı olarak küme.

    • Ya da statik imleç olduğu zaman uyumlu veya zaman uyumsuz imleç tamamen.

rollback İŞLEMİNİ kullanmak yerine, Kaydet işlemi deyim de tetikleyici kısmi bir geri alma işlemi yürütmek için kullanılır.