Was ist der Umfang von TRANSACTION in Sql Server?

8

Ich habe eine gespeicherte Prozedur erstellt und sehe einige Unterschiede zwischen meiner Methodik und denen meiner Kollegen.

Ich verwende SQL Server 2005

  1. Meine gespeicherte Prozedur sieht so aus

    %Vor%
  2. Und die Art und Weise, wie mein Kollege schreibt, sieht wie folgt aus:

    %Vor%

Hier ist der einzige Unterschied zwischen den beiden Methoden die Position von Begin TRAN . Laut mir sollte die Methode meines Kollegen nicht funktionieren, wenn eine Ausnahme auftritt, d. H.% Co_de% sollte nicht ausgeführt werden, da TRAN keinen Bereich in Methode 2 hat. Aber wenn ich versuchte, beide Methoden auszuführen, arbeiteten sie auf die gleiche Weise.

In Methode 1 befindet sich der Gültigkeitsbereich von TRAN außerhalb des try-Blocks, daher sollte er sowohl in try-Block als auch in catch-Block sichtbar sein und sollte laut der Scope-Methode der Programmierung funktionieren.

In Methode 2 ist der Geltungsbereich von TRAN innerhalb des Try-Blocks begrenzt, so dass Rollback und Commit innerhalb des try-Blocks auftreten sollten und Ausnahme auslösen sollte, wenn ein Rollback mit keinem Rollback im catch-Block existiert funktioniert auch perfekt.

Ich bin verwirrt darüber, wie TRANSACTION funktioniert. Ist es frei von Umfang?

    
Shantanu Gupta 15.03.2010, 13:16
quelle

2 Antworten

10

Transaktionen sind nicht auf die Programmiersprachen beschränkt.

Transaktionen sind für die aktuelle Verbindung verschachtelt. Jeder BEGIN TRAN startet eine neue Transaktion und diese Transaktion endet jedes Mal, wenn ein COMMIT oder ROLLBACK aufgerufen wird, es spielt keine Rolle, wo in Ihrem gespeicherten Prozess dies ist.

    
Robin Day 15.03.2010, 13:30
quelle
2
  

Transaktionen sind verschachtelt für die   aktuelle Verbindung. Jeder BEGIN TRAN   startet eine neue Transaktion und das   Die Transaktion endet, wenn ein COMMIT oder   ROLLBACK heißt, es spielt keine Rolle   wo in Ihrem gespeicherten Prozess ist dies.

nur hinzufügen, dass ROLLBACK "alle" offenen Transaktionen für die Verbindung beendet ...

    
ebis 15.03.2010 14:22
quelle

Tags und Links