// 开始事务
begin
start transaction
// 提交事务
commit
// 回滚事务
rollback
// 设置事务隔离级别
set transaction
// 设置提交模式
// 禁止自动提交
set autocommit = 0
// 开启自动提交
set autocommit = 1
注意:在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。
(1)读未提交:read uncommitted
(2)读已提交:read commited
(3)可重复读:repeatable read
(4)串行化:serializable
隔离级别 | 脏读取 | 不可重复读 | 幻象读 |
---|---|---|---|
读未提交 | 可能 | 可能 | 可能 |
读已提交 | 不可能 | 可能 | 可能 |
可重复读 | 不可能 | 不可能 | 对InnoDB 不可能 |
串行化 | 不可能 | 不可能 | 不可能 |
// 查看当前会话事务隔离级别
select @@tx_isolation;
show variables like 'tx_isolation';
// 查看系统当前隔离级别
select @@global.tx_isolation;
show global variables like 'tx_isolation';
// 设置当前会话隔离级别
set session transaction isolatin level repeatable read;
// 设置系统当前隔离级别
set global transaction isolation level repeatable read;