简介
不可分割的操作,每个sql语句都是一个事务,事务只对DML有效,对DQL无效
使用
开启事务
start transaction;
执行操作
update zs_account set money=money-2000;
update ls_account set money=money+2000;
此时数据库的数据没有发生变化,这是因为数据库的隔离等级较高
回滚,撤销刚刚的全部的update操作
rollback;
提交
commit;
并发
通常由数据库的隔离级别造成的数据库数据读取时候出现的问题
- 脏读
- 不可重复读 :一个事务范围内俩次查询返回了不同数据,这就是不可重复读
- 重复读
- 幻读
对应关系
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
read uncommitted | 是 | 是 | 是 |
read committed | 否 | 是 | 是 |
repeatable read | 否 | 否 | 是 |
serializable | 否 | 否 | 否 |
隔离级别
- read uncommitted 可以读取未提交的数据
- read committed 等待提交后才可以读取到数据
- repeatable read
- serializable