Nach Voreinstellung beginnt MySQL jede Clientverbindung mit
eingeschaltetem Autocommit. Dabei wird nach jeder fehlerfrei
gelaufenen SQL-Anweisung ein Commit durchgeführt. Gibt die
Anweisung einen Fehler zurück, so entscheidet die Art des
Fehlers darüber, ob ein Commit oder ein Rollback ausgeführt
wird. Siehe Abschnitt 14.2.15, „InnoDB
-Fehlerbehandlung“.
Wenn Sie Autocommit ausgeschaltet haben und eine Verbindung schließen, ohne explizit die letzte Transaktion zu committen, rollt MySQL diese Transaktion zurück.
Jede der folgenden Anweisungen (und ihre Synonyme) beendet
implizit eine Transaktion, als hätten Sie
COMMIT
gesagt:
ALTER FUNCTION
, ALTER
PROCEDURE
, ALTER TABLE
,
BEGIN
, CREATE
DATABASE
, CREATE FUNCTION
,
CREATE INDEX
, CREATE
PROCEDURE
, CREATE TABLE
,
DROP DATABASE
, DROP
FUNCTION
, DROP INDEX
,
DROP PROCEDURE
, DROP
TABLE
, LOAD MASTER DATA
,
LOCK TABLES
, RENAME
TABLE
, SET AUTOCOMMIT=1
,
START TRANSACTION
,
TRUNCATE
, UNLOCK
TABLES
.
UNLOCK TABLES
committet eine Transaktion
nur dann, wenn Tabellen gesperrt sind.
Die CREATE TABLE
-Anweisung in
InnoDB
wird als eine einzelne Transaktion
ausgeführt. Dies bedeutet, dass ein
ROLLBACK
vom Benutzer nicht die im Lauf
der Transaktion erteilten CREATE
TABLE
-Anweisungen rückgängig macht.
Transaktionen können nicht geschachtelt werden. Dies ist eine
Konsequenz des impliziten COMMIT
, das jede
laufende Transaktion ausführt, wenn Sie eine START
TRANSACTION
-Anweisung oder ein Synonym erteilen.
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.