事务的条件(4个)
原子性,隔离性,一致性,持久性。
原子性:一个事务中的所有操作要么全都完成,要么全都不完成,如果中途出现错误,则会回到最初的状态。
隔离性:在多个事务并发执行的时候,避免错综复杂,交叉导致的数据不一致。
一致性:事务从开始到结束,过程中保证了数据库的完整性,一切都在有秩序的进行着。
持久性:事务处理结束后,对事务的修改就是永久的,即使系统故障也不会丢失。
MySQL事务
1.只有在存储引擎为InnoDB的时候才会支持事务。
2.事务可以用来维护数据库的完整性,保证SQL语句要么执行要么都不执行。
3.事务用来管理insert update delete 语句。
MYSQL 事务处理主要有两种方法:
*begin 开始一个事务
*rollback 事务回滚
*commit 事务确认
MySQL事务测试
(创建一个名为shiwu的表)
mysql> create table shiwu(
-> id int(1) not null
-> );
Query OK, 0 rows affected (0.01 sec)
(检查这个表)
mysql> select id from shiwu;
Empty set (0.00 sec) 【现在还没有插入数据!】
(开始事务)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
(插入一个数据)
mysql> insert into shiwu (id) values (1);
Query OK, 1 row affected (0.01 sec)
(在插入一个数据)
mysql> insert into shiwu (id) values (9);
Query OK, 1 row affected (0.00 sec)
(此时表的状态)
mysql> select id from shiwu;
+----+
| id |
+----+
| 1 |
| 9 |
+----+
(提交事务)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
(从新开始事务,并在插入一个id号为5的数)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into shiwu (id) values (5);
Query OK, 1 row affected (0.00 sec)
(此时的shiwu表)
mysql> select id from shiwu;
+----+
| id |
+----+
| 1 |
| 9 |
| 5 |
+----+
!(现在我回滚)!
mysql> rollback;
Query OK, 0 rows affected (0.01 sec)
(咱们再看shiwu表的结构)
mysql> select id from shiwu;
+----+
| id |
+----+
| 1 |
| 9 |
+----+ 【又变成了原来的表的形式】
【因为回滚所以数据没有插入】