Aracılığıyla paylaş


Al ve saklı yordamları ve Tetikleyicileri tamamlama

Bir ROLLBACK TRANSACTION yürütülüyor veya işlemi yürütme Transact-SQL saklı yordam veya tetikleyiciyi ifadeye olasıdır, ancak hatalara neden olabilir.

Saklı yordamlar

@@ TRANCOUNT farklı ise, değer bir saklı yordam (266) bir bilgi hatası oluşuyor yordamı çalıştırıldı, sahip olduğu çok tamamlanır.Bu iki yolla oluşabilir:

  • Bir @@ TRANCOUNT ile 1 veya daha büyük BIR saklı yordam adı verilir ve bir ROLLBACK TRANSACTION deyim saklı yordamı çalıştırır.0 @@ TRANCOUNT azaltır ve 266 hataya neden olur, saklı yordam tamamlar.

  • Bir saklı yordam adı verilen bir @@ TRANCOUNT, 1 ile ya da büyük ve saklı yordam çalıştırılır bir işlemi yürütme ifadesi.1 @@ TRANCOUNT azaltır ve saklı yordamı tamamlandıktan sonra 266 hataya neden olur.Ancak, BEGIN TRANSACTıON'ardından gerçekleştirilir, işlemi yürütme, hata oluşmaz.

Tetikleyicileri

Tetikleyici, vardı gibi bekleyen bir işlem etkin tetikleyici çalıştırıldığında çalışır.Bu tetikleyici tetikleme deyim, örtülü veya belirtik işlem içinde olup geçerlidir.

Bir deyim autocommit modda başladığında bir örtülü BEGIN kurtarma bir hatayla karşılaşırsa, deyim ile oluşturulan tüm değişiklikler izin vermek için TRANSACTION yoktur.Başka bir örtük, tamamlanmış veya deyim tamamlandığında geri alınmış olduğundan işlem diğer ifadeleri toplu iş iş işleme etkilemez.Başka bir örtük bir tetikleyici çağrıldığında hala etkin, ancak hareketidir.

Tetikleyici yürütüldüğünde, örtülü bir işlemi başlatıldı.Tetikleyici yürütme ve @@ TRANCOUNT tamamlarsa = 0, hata 3609 oluşur ve toplu iş iş iş sonlandırıldı.Bir BEGIN TRANSACTION deyim de tetikleyici verilen iç içe geçmiş bir işlem oluşturur.Bu durumda, bir TRANSACTION yürütme deyimi yürütüldüğünde, deyim yalnızca iç içe geçmiş hareket için geçerli olacaktır.

ROLLBACK TRANSACTION de tetikleyici kullanırken, aşağıdaki davranışını dikkate alın:

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

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

  • Tetikleyici içinde BIR ROLLBACK kapatır ve bildirilen ve tetikleyici harekete deyim içeren toplu iş iş işlemde açılan tüm imleçler kaldırır.Bu, bildirilen ve saklı yordamlar, tetikleyici harekete toplu iş iş işi tarafından adlandırılan açılır işaretçiler içerir.Yalnızca toplu tetikleyici harekete toplu iş için önce bildirilen imleçler kapatıldı.Ancak, STATIK veya INSENSITIVE imleçler açık kalır:

    • CURSOR_CLOSE_ON_COMMIT KAPALı olarak küme.

    • Statik imleç olması zaman uyumlu veya tam olarak doldurulmuş bir zaman uyumsuz imleç.

ROLLBACK TRANSACTION kullanmak yerine, SAVE TRANSACTION deyim de tetikleyici kısmi bir geri alma işlemi yürütmek için kullanılır.