Eine XA-Transaktion umfasst die folgenden Phasen:
Starten Sie mit XA START
eine
XA-Transaktion und versetzen Sie sie in den Status
ACTIVE
.
Sobald die XA-Transaktion aktiv ist, setzen Sie die
SQL-Anweisungen für die Transaktion ab. Zuletzt setzen
Sie eine XA END
-Anweisung ab, mit der
Sie die Transaktion in den Zustand IDLE
versetzen.
Bei einer XA-Transaktion in diesem Zustand können Sie
entweder eine XA PREPARE
-Anweisung oder
eine XA COMMIT ... ONE PHASE
-Anweisung
absetzen:
XA PREPARE
versetzt die Transaktion
in den Zustand PREPARED
. Bei
Eingabe einer XA RECOVER
-Anweisung
an dieser Stelle wird der
xid
-Wert der Transaktion in
die Ausgabe integriert, weil XA
RECOVER
alle XA-Transaktionen auflistet,
deren Zustand PREPARED
ist.
XA COMMIT ... ONE PHASE
bereit die
Transaktion vor und übergibt sie dann direkt. Der
xid
-Wert wird von
XA RECOVER
nicht aufgelistet, weil
die Transaktion endet.
Bei einer XA-Transaktion im Zustand
PREPARED
können Sie eine XA
COMMIT
-Anweisung absetzen, um sie zu übergeben
und zu beenden, oder Sie machen sie mit einer XA
ROLLBACK
-Anweisung rückgängig (sie wird dann
ebenfalls beendet).
Es folgt eine einfache XA-Transaktion, die im Rahmen einer globalen Transaktion einen Datensatz in eine Tabelle einfügt:
mysql>XA START 'xatest';
Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO mytable (i) VALUES(10);
Query OK, 1 row affected (0.04 sec) mysql>XA END 'xatest';
Query OK, 0 rows affected (0.00 sec) mysql>XA PREPARE 'xatest';
Query OK, 0 rows affected (0.00 sec) mysql>XA COMMIT 'xatest';
Query OK, 0 rows affected (0.00 sec)
Im Kontext einer gegebenen Clientverbindung schließen sich
XA-Transaktionen und lokale Transaktionen (also
Nicht-XA-Transaktionen) gegenseitig aus. Wenn beispielsweise
mit XA START
eine XA-Transaktion gestartet
wurde, dann kann eine lokale Transaktion erst begonnen werden,
wenn die XA-Transaktion übergeben oder rückgängig gemacht
wurde. Umgekehrt können, wenn eine lokale Transaktion mit
START TRANSACTION
begonnen wurde,
XA-Anweisungen erst dann verwendet werden, wenn die
Transaktion übergeben oder rückgängig gemacht wurde.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.