Können wir die Transaktion in einer gespeicherten Prozedur verwenden?
Können wir die Transaktion in einer gespeicherten Prozedur verwenden?

Video: Können wir die Transaktion in einer gespeicherten Prozedur verwenden?

Video: Können wir die Transaktion in einer gespeicherten Prozedur verwenden?
Video: Was ist eine Transaktionen und ACID? (Mit MySQL Beispiel) 2024, April
Anonim

Wenn wir haben mehr als eine SQL-Anweisung in der Ausführung im gespeicherte Prozedur und wir alle Änderungen, die von einer der SQL-Anweisungen vorgenommen wurden, rückgängig machen möchten, falls aufgrund einer der SQL-Anweisungen ein Fehler aufgetreten ist, Wir können die Transaktion in einer gespeicherten Prozedur verwenden.

Werden gespeicherte Prozeduren in einer Transaktion ausgeführt?

Verschachtelt Gespeicherte Prozeduren sind hingerichtet in dem Transaktion Kontext der äußersten gespeicherte Prozedur . Dies ist die Standardeinstellung. Stellt das oben beschriebene Standardverhalten bereit. Das heißt, alle SQL-Anweisungen in a gespeicherte Prozedur ausführen als Single Transaktion Block.

Können wir neben dem oben genannten auch Commit in der Prozedur verwenden? Im Allgemeinen, Verfahren sollte nicht verpflichten . wenn du verpflichten in einem gelagerten Verfahren , schränken Sie die Wiederverwendbarkeit ein, weil ein Anrufer, der die Änderungen wünscht, die Verfahren macht, Teil einer größeren Transaktion zu sein, kann nicht einfach die Verfahren direkt.

Können wir diesbezüglich die Transaktion in der SQL-Funktion verwenden?

1 Antwort. Deshalb Transaktionen sind unnötig für sql -Server Funktionen . Aber du kann Veränderung Transaktion Isolationsstufe können Sie zum Beispiel verwenden NOLOCK-Hinweis, um "uncommitted lesen" zu erreichen Transaktion Isolationsstufe und lesen nicht festgeschriebene Daten von anderen Transaktionen.

Können wir verschachtelte Transaktionen in SQL verwenden, wenn ja, wie?

SQL Server unterstützt nicht wirklich verschachtelte Transaktionen . Es gibt nur eins Transaktion auf einmal. Dieses Transaktion hat eine grundlegende verschachtelte Transaktion Zähler, @@TRANSCOUNT. Jeder aufeinanderfolgende Beginn Transaktion Schritte das Zähler um eins, jedes Commit Transaktion reduziert es um eins.

Empfohlen: