|
Spec-Zone .ru
спецификации, руководства, описания, API
|
По умолчанию соединение с сервером 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 также предлагают отдельную специальную фиксацию
транзакции и откатывают функции или методы.