15.2.6.1. 如何在InnoDB中用不同的API来使用事务

来源:互联网 发布:中标数据网手机版 编辑:程序博客网 时间:2024/05/18 01:43

15.2.6.1. 如何在InnoDB中用不同的API来使用事务

默认地,每个连接到MySQL服务器的客户端开始之时是允许自动提交模式的,这个模式自动提交你运行的每个SQL语句。要使用多语句事务,你可以用SQL语句SET AUTOCOMMIT = 0禁止自动提交,并且用COMMIT和ROLLBACK来提交或回滚你的事务。 如果你想要autocommit保持打开状态,可以在START TRANSACTION与COMMIT或ROLLBACK之间封装你的事务。下列的例子演示两个事务。第一个是被提交的,第二个是被回滚的:

shell> mysql test
Welcome to the MySQL monitor.  Commands end with ; or /g.
Your MySQL connection id is 5 to server version: 3.23.50-log
Type 'help;' or '/h' for help. Type '/c' to clear the buffer.
mysql> CREATE TABLE CUSTOMER (A INT, B CHAR (20), INDEX (A))
    -> ENGINE=InnoDB;
Query OK, 0 rows affected (0.00 sec)
mysql> BEGIN;
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>

在类似PHP, Perl DBI/DBD, JDBC, ODBC, 或者MySQL的标准C调用接口这样的API上,你能够以字符串形式发送事务控制语句,如COMMIT,到MySQL服务器,就像其它任何的SQL语句那样,诸如SELECT或INSERT。一些API也提供单独的专门的事务提交和回滚函数或者方法。