⒈事务
一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。
⒉事务的特性(ACID)
1.原子性(Atomicity):一个事务不可再分割,要么都执行要么都不执行。
2.一致性(Consistency):一个事务执行会使数据从一个一致状态切换到另外一个一致状态。
3.隔离性(Isolation):一个事务的执行不受其它事务的干扰。
4.持久性(Durability):一个事务一旦提交,则会永久的改变数据库的数据。
⒊事务的创建
1.隐式事务:事务没有明显的开启和结束的标记,例如insert、update和delete语句
2.显式事务:事务具有明显的开启和结束的标记。前提,必须先设置自动提交功能为禁用。set autocommit = 0;
显示当前事务状态 show variables like 'autocommit';
⒋事务过程
①开启事务
1 set autocommit = 0;2 start transaction; #可选
②编写事务中的sql语句(select、insert、update、delete)
1 语句1;2 语句2;3 ....
③结束事务
1 commit; #提交事务2 rollback; #回滚事务
⒌事务的隔离级别
级别
脏读
不可重复读
幻读
read uncommitted
读未提交(数据)
✓
✓
✓
read committed
读已提交(数据)
✗
✓
✓
repeatable read
可重复读
✗
✗
✓
serializable
串行化
✗
✗
✗
MySql中默认第三个隔离级别:repeatable read(可重复读)
Oracle中默认第二个隔离级别:read committed(读已提交)
查看隔离级别:select @@tx_isolation
设置隔离级别:set session|global transaction isolation level
⒍SAVEPOINT回滚点
在sql中设置
1 语句1;2 savepoint a; #设置回滚点3 语句2;4 rollback to a; #回滚到指定的回滚点