mysql——TCL(事务控制语言)

TCL
事务控制语言

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

案例:转账
张三丰 1000
郭溪 1000

事务的acid属性
1.原子性:一个事务不可再分割,要么全部执行,要么全部不执行
2.一致性:一个事务执行会使数据从一个一致性状态切换到另一个一致状态
3.隔离性:一个事务的执行不受其他事务的干扰,多个事务互相隔离
4.持久性:一个事务一旦提交,则会永久的改变数据库的数据

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

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

步骤1:开启事务
set autocommit=0
start transaction;

步骤2:编写事务中的sql语句(select insert update delete)
语句1
语句2
语句3

步骤3:结束事务
commit:提交事务
rollback:回滚事务
savepoint 节点名;设置保存点

事务的隔离级别
脏读 不可重复读 幻读
read uncommitted 可以 可以 可以
read committed 不可以 可以 可以
repeatable read 不可以 不可以 可以
serializable 不可以 不可以 不可以
MySQL 中默认第三个隔离级别 repeatable read
oracle 中默认第二个隔离级别 read committed
脏读:一个事务读取了其他事务还没有提交的数据,读到的是其他事务“更新”的数据
不可重复读:一个事务多次读取,结果不一样。
幻读:一个事务读取了其他事务还没有提交的数据,读到的是其他事务“插入”的数据

set autocommit=0;

update account set balance = 500 username=‘小刚’;
update account set balance =1500 username=‘小红’;
查看隔离级别
select @@tx_isolation;

设置隔离级别
set session(或global) transaction isolation level 隔离级别

commit

设置当前MySQL 连接的隔离级别
set transaction isolation read committed

设置数据库系统的全局的隔离级别
set global transaction isolation level read committed

演示savepoint 的使用
set autocommit=0
start transaction
delete from account where id= 25;
savepoint a;

rollback to a;

delete和truncate在事务使用时的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值