8.事务

#TCL Transaction Control Language 事务控制语言
/*

事务:
一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行

事务的acid属性
1.原子性(atomicity):事务是不可分割,要么都执行要么都不执行
2.一致性(consistency):事务必须使数据库从一个一致性状态变换到另外一个一致性状态
3.隔离性(isolation):一个事物的执行不能被其他事务干扰
4.持久性(Durability):一个事物一旦提交,则会永久的改变数据库的数据

查看变量:show variables like ‘autocommit’;

事务的创建
隐式事务:事务没有明显的开启和结束的标记
     比如insert、update、delete

显示事务:事务具有明显的开启和结束的标记
前提:必须先设置自动提交功能为禁用

禁用自动提交功能:set autocommit =0;

步骤1:开启事务
  set autocommit = 0 ;
  start transaction; 可选的
步骤二:编写事务中的sql语句(select insert update delete)
  语句1;
  语句2;
  ……
步骤3:结束事务
  commit;提交事务
 或 rollback;回滚事务

设置保存点:savepoint 节点名;

事物的隔离级别
          脏读      不可重复读       幻读
read uncommitted         √               √                     √ 
read committed             √               √                     √
repeatable read        ×         ×        √
serializable                    ×               ×                     ×

mysql中,默认repeated read
oracle中,默认read committed

查看隔离级别:select @@tx_ioslation;
设置隔离级别 set session|global transaction isolation level 隔离级别;

*/

#演示事务的使用步骤 转账
#开启事务
SET autocommit = 0;
#编写一组事务
UPDATE accout SET balance =1000 WHERE username = '张无忌';
UPDATE accout SET balance =1000 WHERE username = '赵敏';
#结束事务
COMMIT;


#演示savepoint的使用
SET autocommit = 0;
START TRANSACTION;
DELETE FROM account WHERE id =25;
SAVEPOINT a;#设置保存点
DELETE FROM account WHERE id=28;
ROLLBACK TO a;#回滚到保存点

 

上一篇:如何查看 mysql 自动提交事务


下一篇:TCL-事物隔离级别