mysql基础_08_事务控制语言(TCL)
-
Transaction Control Language 事务控制语言
-
事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。
1. 事务的特性(面试)
- 原子性:一个事务不可再分割,要么都执行要么都不执行
- 一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致状态
- 隔离性:一个事务的执行不受其他事务的干扰
- 持久性:一个事务一旦提交,则会永久的改变数据库的数据.
2. 创建事务
2.1 隐式
- 事务没有明显的开启和结束的标记
- 比如insert、update、delete语句
2.2 显式
- 显式事务:事务具有明显的开启和结束的标记
- 前提:必须先设置自动提交功能为禁用 set autocommit=0;
2.3 使用
-
步骤1:开启事务
set autocommit=0;
start transaction;可选的 -
步骤2:编写事务中的sql语句(select insert update delete)
语句1;
语句2;
… -
步骤3:结束事务
commit;提交事务
rollback;回滚事务
3. 数据库的隔离级别
3.1 会出现的问题
- 更新丢失
- 脏读
- 不可重复读
- 幻读
3.2 数据库的四种隔离级别
- 读未提交(Read Uncommitted)
- 读已提交(Read Committed)
- 可重复读(Read Committed)
- 串行化(Read Committed)
查看数据库隔离级别
# 查看事务隔离级别
SELECT @@tx_isolation;
# 设置事务隔离级别
SET session transaction isolation level 隔离级别;