事务控制
一般来说,mysql默认开启了事务自动提交功能,每条sql执行都会提交事务。可以使用如下语句关闭事务自动提交功能。
show session variables like 'autocommit';
set @@autocommit = 0;
show session variables like 'autocommit';
1、 事务开始
begin或start transaction;
2、 事务提交
commit或commit work;
3、 回滚
rollback或rollback work;
4、 保存点设置
savepoint 标识;
5、 回滚到保存点
rollback to savepoint 标识;
6、 删除保存点
release savepoint 标识。
事务隔离
READ-UNCOMMITTED 读未提交
READ-COMMITTED 读已提交
REPEATABLE-READ 重复读
SERIALIZABLE 序列化
脏读
不可重读
幻读
READ-UNCOMMITTED
Y
Y
Y
READ-COMMITTED
N
Y
Y
REPEATABLE-READ
N
N
Y
SERIALIZABLE
N
N
N
脏读:读取的数据为另一个事务过程数据,读取数据可能是错误的。
不可重读:第二次读取数据内容与第一次读取数据内容不同。(不存在读取事务过程数据)
幻读:第二次读取数据行数比第一次读取行数多或少。(不存在读取事务过程数据)
SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL{READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SERIALIZABLE}