博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

MySQL事务的使用

Posted on 2012-08-30 11:25  刘乐  阅读(154)  评论(0)    收藏  举报

数据库的事务对数据库的操作有着非常重要的作用,对应一些重要的数据,用户希望在确认操作正确前不要做commit的处理,如果数据出错了,可以回滚数据,以此保证数据的正确性,这就需要用到数据库的事务了。MySQL中只有InnoDB支持事务。所以在安装和启动之前需要执行好使用‍InnoDB引擎。

        MySQL中有两种方式可以处理事务:

        一种是通过begin来指定下边的一段操作是事务的处理,如果数据出错可以通过rallback来回滚数据,如果数据正确则需要commit来提交数据。

      

mysql> use test;
    Database changed
    mysql> CREATE TABLE `test`(
    -> id int(4)
    -> ) TYPE=INNODB;
Query OK, 0 rows affected, 1 warning (0.05 sec)

mysql> select * from test
    -> ;
Empty set (0.01 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(5);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test value(6);
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;
+------+
| id   |
+------+
|    5 |
|    6 |
+------+
2 rows in set (0.00 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(7);
Query OK, 1 row affected (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;
+------+
| id   |
+------+
|    5 |
|    6 |
+------+
2 rows in set (0.00 sec)

        一种是通过设定MySQL的自动提交模式,MySQL中的自动提交模式是通过autocommit来指定的,MySQL默认是自动提交模式的,即‍autocommit=1,所以可以在一段需要事务支持的数据库操作中可以指定‍autocommit=0来完成事务的功能

set autocommit = 0;

query(sql);

rollback/commit;

set autocommit = 1;

        编程用到事务的时候一般是使用后者来完成事务处理的。