【MySQL进阶之路 | 高级篇】显式事务和隐式事务
创始人
2024-12-03 23:06:50
0

使用事务有两种方式:显式事务和隐式事务。

1. 显式事务

步骤1:

START TRANSACTION或者BEGIN,作用是显式开启一个事务。

START TRANSACTION语句相较于BEGIN特别之处在于,后面能跟几个修饰符。比如:

  • READ ONLY:标识当前事务是一个只读事务,也就是属于该事务的数据库操作只能读取数据,而不能修改数据。注意:只读事务中只是不允许修改那些其他事务也能访问到的表中的数据,对于临时表来说,由于它们只能在当前会话可见,所以只读事务其实也是可以对临时表做DML操作的。
  • READ WRITE(默认情况)标识当前事务是一个读写事务,也就是属于该事务的数据库操可以写入数据,也可以读取数据。
  • with consistent snapshot:启动一致性读。

read only和read write是用来设置所谓的事务访问模式的,就是以只读还是读写的方式来访问数据库的数据,一个事务的访问模式不能同时设置为只读和读写。所以不能把read only和read write放在START TRANSACTION后。

步骤2:

一系列事务中的操作(主要是DML,不含DDL)

步骤3:

提交事务或中止事务(回滚事务)。

提交事务:COMMIT;

回滚事务,撤销正在进行的所有没提交的修改:ROLLBACK;

回滚到保存点:rollback to savepoint;

在事务中创建保存点,方便以后对保存点进行回滚。一个事务可以存在多个保存点:savepoint 保存点名称;

删除某个保存点:release savepoint 保存点名称;

2. 隐式事务

MySQL中有个系统变量autocommit.默认开启(autocommit=on),DML操作是个独立的事务,自动提交。

可以关闭自动提交。

  • set autocommit=false
  • 在autocommit=true前提下,使用START TRANSACTION开启事务,那么DML操作不会自动提交数据。

3. 隐式提交数据情况

  • DDL操作。数据库对象,指的就是数据库,表,视图,存储过程等结构。当我们使用CREATE,ALTER,DROP等语句去修改数据库对象时,就会隐式的提交前边语句所属于的事务。
  • 隐式使用或修改MySQL数据库中的表。当我们使用ALTER USER,CREATE USER,DROP USER,RENAME USER,REVOKE,SET PASSWORD等语句时会隐式的提交前边的语句所属于的事务。
  • 事务控制或关于锁定的语句:当我们在一个事务还没提交或者回滚时就又使用START TRANSACTION或者BEGIN语句开启了另一个事务时,会隐式提交上一个事务。当前的autocommit系统变量的值为OFF,手动调为ON时,也会隐式的提交。

相关内容

热门资讯

wepoke作弊器!鱼扑克ap... wepoke作弊器!鱼扑克app的确真的有挂,aapoker辅助辅助挂;原来确实真的有挂(需添加指定...
aa扑克辅助!aapoker ... aa扑克辅助!aapoker 辅助工具,aapOKER真是是有挂,必赢教程(有挂详情)1、下载好aa...
九分钟揭秘!摆牌十三张有外挂吗... 九分钟揭秘!摆牌十三张有外挂吗,哈局八张一直真的是有挂,力荐教程(有挂细节)1、用户打开应用后不用登...
微扑克全自动机器人!微扑克机制... 微扑克全自动机器人!微扑克机制技巧,微扑克辅助软件下载(总是有挂)是一款可以让一直输的玩家,快速成为...
七分钟详情!中至赣牌圈祈福有用... 七分钟详情!中至赣牌圈祈福有用吗,兴动辅助器免费版v3.0(好像有挂)小薇(透视辅助)致您一封信;亲...
wepoke辅助技巧!wePo... 1、wepoke辅助技巧!wePoKe果真是真的有挂,wpk辅助神器攻略;详细教程。2、wePoKe...
微扑克全自动机器人!微扑克可以... 自定义微扑克系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分享...
9分钟实锤!福建众娱软件辅助去... 9分钟实锤!福建众娱软件辅助去哪里买,闲玩本来存在有挂,透明挂教程(有挂脚本)1、完成福建众娱软件辅...
aapoker辅助(aapoK... aapoker辅助(aapoKer挂)aapoker发牌规律(竟然真的是有挂)1)aapoKer辅助...
八分钟攻略!手机心悦麻将有挂吗... 八分钟攻略!手机心悦麻将有挂吗,闽游麻将助赢神器购买(原来真的有挂)1、闽游麻将助赢神器购买系统规律...