数据库:TCL事务控制语言

 一:介绍

事务含义:

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

事务的特性ACID

    原子性:一个事务不可再分割,要么都执行要么都不执行
    一致性:一个事务执行会使数据从一个一致状态切换到另一个一致状态
    隔离性:一个事物执行不受其他事物的干扰
    持久性:一个事务一旦提交,则永久改变数据库的数据。

事务的创建

    隐式:事务没有明显的开启和结束的标记 比如insert、update、delete
    显式:事务具有明显的开启和结束的标记
           前提:必须设置自动提交功能为禁用 set autocommit=0;
    步骤:
           开启事务
                  set autocommit=0;
                  start transaction;可选的
                  编写事务中的sql语句               
          结束事务
              commit;提交事务
              rollback;回滚事务

隔离级别:

脏读:T1读取T2更新但未提交的字段,T2回滚,T1脏读
不可重复读:T1,T2读取一个字段,T2更新,T1再读的内容变化
幻读:T1,T2读取一个字段,T2插入新行,T1再读则多出几段
                   脏读  不可重复读    幻读
read uncommitted   有        有         有
read committed     无        有         有 
repeatable read    无        无         有
serializable       无        无         无
mysql默认第三个级别,oracle默认第二个级别
select @@tx_isolation;查看隔离级别
set session|global transaction isolation level;隔离级别

#1.事务
SET autocommit=0;
START TRANSACTION;
UPDATE account SET balance =200 WHERE username='张无忌';
UPDATE account SET balance =1800 WHERE username='赵敏';
COMMIT;
ROLLBACK;
#2.设置保存点
SET autocommit=0;
START TRANSACTION;
DELETE FROM account WHERE id=1;
SAVEPOINT a;#设置保存点
DELETE FROM account WHERE id=28;
ROLLBACK TO a;#回滚到保存点

 

上一篇:zaoyi


下一篇:Vivado / Vitis HLS有什么奇技淫巧?