数据库的事务对数据库的操作有着非常重要的作用,对应一些重要的数据,用户希望在确认操作正确前不要做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;
编程用到事务的时候一般是使用后者来完成事务处理的。
浙公网安备 33010602011771号