@yanglt7
2018-06-06T06:42:18.000000Z
字数 2004
阅读 756
MySQL
MySQL事务主要用于处理操作量大,复杂程度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性):
在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。
mysql> use test;
Database changed
mysql> create table runoob_transaction_test(id int(5)) engine=innodb;
Query OK, 0 rows affected (0.05 sec)
mysql> select * from runoob_transaction_test ;
Empty set (0.01 sec)
mysql> begin; #开始事务
Query OK, 0 rows affected (0.00 sec)
mysql> insert into runoob_transaction_test value(5);
Query OK, 1 row affected (0.01 sec)
mysql> insert into runoob_transaction_test value(6);
Query OK, 1 row affected (0.00 sec)
mysql> commit; #提交事务
Query OK, 0 rows affected (0.20 sec)
mysql> select * from runoob_transaction_test;
+------+
| id |
+------+
| 5 |
| 6 |
+------+
2 rows in set (0.00 sec)
mysql> begin; #开始事务
Query OK, 0 rows affected (0.00 sec)
mysql> insert into runoob_transaction_test values(7);
Query OK, 1 row affected (0.18 sec)
mysql> rollback; #回滚
Query OK, 0 rows affected (0.01 sec)
mysql> select * from runoob_transaction_test; #因为回滚所以数据没有插入
+------+
| id |
+------+
| 5 |
| 6 |
+------+
2 rows in set (0.00 sec)