Spec-Zone .ru
спецификации, руководства, описания, API

5.4.2. Группировка Операций DML с Транзакциями

По умолчанию соединение с сервером MySQL начинается с включенного режима автоматической фиксации, который автоматически фиксирует каждый SQL-оператор, поскольку Вы выполняете это. Этот режим работы мог бы быть незнакомым, если у Вас есть опыт с другими системами баз данных, где это - общепринятая практика, чтобы выпустить последовательность операторов DML и фиксировать их или прокрутить их назад все вместе.

Чтобы использовать транзакции многократного оператора, выключите автоматическую фиксацию с SQL-оператором SET autocommit = 0 и закончите каждую транзакцию COMMIT или ROLLBACK как соответствующий. Чтобы оставить автоматическую фиксацию на, начните каждую транзакцию с START TRANSACTION и закончите это COMMIT или ROLLBACK. Следующий пример показывает две транзакции. Первое фиксируется; второе откатывается.

shell> mysql testmysql> CREATE TABLE customer (a INT, b CHAR (20), INDEX (a));Query OK, 0 rows affected (0.00 sec)mysql> -- Do a transaction with autocommit turned on.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> -- Do another transaction with autocommit turned
        off.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> INSERT INTO customer VALUES (20, 'Paul');Query OK, 1 row affected (0.00 sec)mysql> DELETE FROM customer WHERE b = 'Heikki';Query OK, 1 row affected (0.00 sec)mysql> -- Now we undo those last 2 inserts and the delete.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>

Транзакции на Клиентских Языках

В API, таких как PHP, Perl DBI, JDBC, ODBC, или стандарт C вызывают интерфейс MySQL, можно отправить операторы управления транзакциями такой как COMMIT к серверу MySQL как строки точно так же как любые другие SQL-операторы такой как SELECT или INSERT. Некоторые API также предлагают отдельную специальную фиксацию транзакции и откатывают функции или методы.