SET TRANSACTION
Transaktion konfigurieren und starten
DSQL, ESQL
SET TRANSACTION [NAME tr_name] [<tr_option> ...] <tr_option> ::= READ {ONLY | WRITE} | [NO] WAIT | [ISOLATION LEVEL] <isolation_level> | NO AUTO UNDO | RESTART REQUESTS | AUTO COMMIT | IGNORE LIMBO | LOCK TIMEOUT seconds | RESERVING <tables> | USING <dbhandles> <isolation_level> ::= SNAPSHOT [AT NUMBER snapshot_number] | SNAPSHOT TABLE [STABILITY] | READ {UNCOMMITED | COMMITTED} [<read-commited-opt>] <read-commited-opt> ::= [NO] RECORD_VERSION | READ CONSISTENCY <tables> ::= <table_spec> [, <table_spec> ...] <table_spec> ::= tablename [, tablename ...] [FOR [SHARED | PROTECTED] {READ | WRITE}] <dbhandles> ::= dbhandle [, dbhandle ...]
Parameter | Beschreibung |
---|---|
tr_name |
Transaktionsname.Nur in ESQL verfügbar |
tr_option |
Optionale Transaktionsoption.Jede Option sollte höchstens einmal angegeben werden, einige Optionen schließen sich gegenseitig aus (z.B. |
seconds |
Die Zeit in Sekunden, die die Anweisung warten soll, falls ein Konflikt auftritt.Muss größer oder gleich |
snapshot_number |
Snapshot-Nummer, die für diese Transaktion verwendet werden soll |
tables |
Die Liste der zu reservierenden Tische |
dbhandles |
Die Liste der Datenbanken, auf die die Datenbank zugreifen kann.Nur in ESQL verfügbar |
table_spec |
Spezifikationen für Tabellenreservierungen |
tablename |
Der Name der zu reservierenden Tabelle |
dbhandle |
Das Handle der Datenbank, auf die die Transaktion zugreifen kann.Nur in ESQL verfügbar |
Die Anweisung SET TRANSACTION
konfiguriert die Transaktion und startet sie.In der Regel starten nur Client-Anwendungen Transaktionen.Die Ausnahmen sind die Fälle, in denen der Server eine autonome Transaktion oder Transaktionen für bestimmte Hintergrundsystem-Threads/-Prozesse startet, wie z. B. Sweeps.
Eine Clientanwendung kann eine beliebige Anzahl gleichzeitig laufender Transaktionen starten.Eine einzelne Verbindung kann über mehrere gleichzeitig aktive Transaktionen verfügen (obwohl dies nicht von allen Treibern oder Zugriffskomponenten unterstützt wird).Für die Gesamtzahl der ausgeführten Transaktionen in allen Clientanwendungen, die mit einer bestimmten Datenbank arbeiten, gibt es ab dem Zeitpunkt, an dem die Datenbank aus ihrer Sicherungskopie wiederhergestellt wurde, oder ab dem Zeitpunkt, an dem die Datenbank ursprünglich erstellt wurde, eine Grenze.Das Limit beträgt 248 — 281.474.976.710.656 — in Firebird 3 und höher, und 231-1 — oder 2.147.483.647 — in früheren Versionen.
Alle Klauseln in der SET TRANSACTION
-Anweisung sind optional.Wenn die Anweisung, die eine Transaktion startet, keine Klauseln enthält, wird die Transaktion mit Standardwerten für Zugriffsmodus, Sperrenauflösungsmodus und Isolationsstufe gestartet, die wie folgt lauten:
SET TRANSACTION
READ WRITE
WAIT
ISOLATION LEVEL SNAPSHOT;
Warning
|
Datenbanktreiber oder Zugriffskomponenten können andere Standardwerte verwenden.Weitere Informationen finden Sie in deren Dokumentation. |
Der Server weist Transaktionen sequentiell Ganzzahlen zu.Immer wenn ein Client eine Transaktion startet, entweder explizit definiert oder standardmäßig, sendet der Server die Transaktions-ID an den Client.Diese Nummer kann in SQL mit der Kontextvariablen CURRENT_TRANSACTION
abgerufen werden.
Note
|
Einige Datenbanktreiber – oder ihre maßgeblichen Spezifikationen – erfordern, dass Sie die Transaktion über API-Methoden konfigurieren und starten. In diesem Fall wird die Verwendung von Weitere Informationen finden Sie in der Dokumentation Ihres Treibers. |
Die Klauseln NAME
und USING
sind nur in ESQL gültig.