Spec-Zone .ru
спецификации, руководства, описания, API
|
По умолчанию соединение с сервером MySQL начинается с включенного режима автоматической фиксации, который автоматически фиксирует каждый SQL-оператор, поскольку Вы выполняете это. Этот режим работы мог бы быть незнакомым, если у Вас есть опыт с другими системами баз данных, где это - общепринятая практика, чтобы выпустить последовательность операторов DML и фиксировать их или прокрутить их назад все вместе.
Чтобы использовать транзакции
многократного оператора, выключите автоматическую фиксацию с SQL-оператором SET autocommit
= 0
и закончите каждую транзакцию COMMIT
или ROLLBACK
как соответствующий. Чтобы оставить автоматическую фиксацию на,
начните каждую транзакцию с START TRANSACTION
и закончите это COMMIT
или ROLLBACK
. Следующий пример показывает две транзакции. Первое фиксируется;
второе откатывается.
shell>mysql test
mysql>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 также предлагают отдельную специальную фиксацию
транзакции и откатывают функции или методы.