1.什么是事务?
事务是最小的不可分割的单元,事务能够保证一个业务的完整性
多条SQL语句会有同时成功或同时失败的要求
2.mysql如何控制事务?
mysql默认是开启事务的(自动提交)
mysql> select @@autocommit; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec)
默认事务开启的作用是什么?
当我们去执行一条SQL语句时,效果会马上提现出来,且不能回滚
事务回滚即撤销SQL语句执行的效果
3.如何让事务能够回滚?
通过设置自动提交为FALSE的方法来实现,运用roll back进行回滚
set autocommit=0;
mysql> insert into person values(4,'章华',7); Query OK, 1 row affected (0.02 sec) mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | | 4 | 章华 | 7 | +------+------+--------+ 4 rows in set (0.00 sec) mysql> rollback; Query OK, 0 rows affected (0.07 sec) mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | +------+------+--------+ 3 rows in set (0.00 sec)
再次提交数据 mysql> insert into person values(4,'章华',7); Query OK, 1 row affected (0.01 sec) 手动提交 mysql> commit; Query OK, 0 rows affected (0.01 sec) 进行回滚 mysql> rollback; Query OK, 0 rows affected (0.00 sec) 数据具有持久性,一旦提交就不能再进行回滚 mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | | 4 | 章华 | 7 | +------+------+--------+ 4 rows in set (0.00 sec)
4.当事务开启自动提交时,可以使用begin或者 start transaction来进行手动开启事务
开启自动提交功能
mysql> set autocommit=1; Query OK, 0 rows affected (0.00 sec)
查询事务提交的状态 mysql> select @@autocommit; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec)
开始手动提交
mysql> start transaction; Query OK, 0 rows affected (0.00 sec) 插入提条数据 mysql> insert into person values (9,'六六',8); Query OK, 1 row affected (0.06 sec) mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | | 4 | 章华 | 7 | | 9 | 六六 | 8 | +------+------+--------+ 5 rows in set (0.00 sec) 进行回滚 mysql> rollback; Query OK, 0 rows affected (0.01 sec) mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | | 4 | 章华 | 7 | +------+------+--------+ 4 rows in set (0.00 sec)
事务的四大特性
A原子性:事务是最小的单元,不可以再进行分割
C一致性:同一事务中的SQL语句,必须保证同时成功或同时失败
I隔离性:事务1和事务2之间具有隔离性
D持久性:事务一旦结束,就不可以再进行回滚
事务手动提交的三种方式
1.修改默认提交:set autocommit=0;
2.使用begin;
3.使用start transaction;
事务手动提交:commit;
事务手动回归:collback;
事务的隔离性