Standardmäßig startet jeder Client, der sich mit dem
MySQL-Server verbindet, mit eingeschaltetem Autocommit-Modus.
Das bedeutet, dass jede SQL-Anweisung direkt bei der Ausführung
automatisch in der Datenbank festgeschrieben wird. Um
Transaktionen zu verwenden, die aus mehreren Anweisungen
bestehen, schalten Sie Autocommit mit der SQL-Anweisung
SET AUTOCOMMIT = 0
aus und verwenden
COMMIT
und ROLLBACK
, um
Ihre Transaktionen zu committen oder zurückzurollen. Wenn Sie
Autocommit eingeschaltet lassen möchten, können Sie Ihre
Transaktionen zwischen START TRANSACTION
und
entweder COMMIT
oder
ROLLBACK
einschließen. Das folgende Beispiel
zeigt zwei Transaktionen: Die erste wird committet und die
zweite zurückgerollt.
shell>mysql test
mysql>CREATE TABLE CUSTOMER (A INT, B CHAR (20), INDEX (A))
->ENGINE=InnoDB;
Query OK, 0 rows affected (0.00 sec) mysql>START TRANSACTION;
Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO CUSTOMER VALUES (10, 'Heikki');
Query OK, 1 row affected (0.00 sec) mysql>COMMIT;
Query OK, 0 rows affected (0.00 sec) mysql>SET AUTOCOMMIT=0;
Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO CUSTOMER VALUES (15, 'John');
Query OK, 1 row affected (0.00 sec) mysql>ROLLBACK;
Query OK, 0 rows affected (0.00 sec) mysql>SELECT * FROM CUSTOMER;
+------+--------+ | A | B | +------+--------+ | 10 | Heikki | +------+--------+ 1 row in set (0.00 sec) mysql>
In APIs wie PHP, Perl DBI, JDBC, ODBC oder der
Standardschnittstelle für C-Aufrufe von MySQL können Sie
Anweisungen zur Transaktionssteuerung wie etwa
COMMIT
wie alle anderen SQL-Anweisungen,
beispielsweise SELECT
oder
INSERT
, als Strings an den MySQL-Server
senden. Manche APIs bieten auch eigene, spezielle
Transaktionsfunktionen oder -methoden für Commit und Rollback.
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.