mysql中autocommit,start transaction和begin/commit的异同
相同点:这三个关键字都与mysql的事务相关,直接操纵事务的语句,
不同点:
(1)他们的作用范围不一样。
AUTOCOMMIT是数据库innodb引擎级别的属性,对于start transaction和begin/end而言是全局的,一旦使用SET AUTOCOMMIT=0 禁止自动提交,则在这个数据库内部的所有事务都不会自动提交,除非你手动的为每一个事务执行了commit或者rollback语句;而start transaction和begin/commit只能控制某一个事务。
(2)优先级不同。存在一种set autocommit = 1/0 但是 对于某一个sql语句使用了 begin/commit的原子性操作,那么mysql会优先使用begin/commit命令控制被这组命令修饰的事务;,这一点比较重要,因为之前很多的博主都说要先设置set autocommit = 0关闭掉事务的自动提交属性才能使用 begin/commit或者begin/rollback的原子性操作,这是错误的。关于这一点,mysql官方文档做了详细的解释,
下面是我引用的官方文档中的最重要的一句话
A session that has autocommit enabled can perform a multiple-statement transaction by starting it with an explicit START TRANSACTION or BEGIN statement and ending it with a COMMIT or ROLLBACK statement.
- 至于start transaction 和 begin的区别:
两者的作用一摸一样,只是在begin可能成为关键字的时候,使用start transaction 可以 避免这种情况,start transaction或者begin开启一个事务,然后使用commit提交事务或者ROLLBACK回滚事务
mysql中autocommit,start transaction和begin/commit的异同相关推荐
- Mysql中autocommit的用法
定义 Mysql文档原文:SET autocommit disables or enables the default autocommit mode for the current session. ...
- mysql 删除最后100条_sql-如何回滚我在MySQL中的最后一个删除命令?
sql-如何回滚我在MySQL中的最后一个删除命令? 我不小心从表中删除了很多行... 如何退回? 我使用PuTTY执行查询. 如果您能安全地指导我,我将不胜感激. 10个解决方案 96 votes ...
- mysql中transaction的实现
transaction在数据库编程中是一个重要的概念,这样做可以控制对数据库操作的事务提交. 但是要想在程序中实现事务,要求数据库本身支持事务. 现在的关系型数据库,我们日常使用的mysql,orac ...
- mysql 事务autocommit_亲身实验mysql配置中autocommit和事务的关系
话说亲身实验mysql配置中autocommit和事务的关系,是由于项目中用到的mysql事务没能回滚,我用的是InnoDB的引擎,就开始追查原因.这一查不要紧,发现网上如出一辙的说法竟也不可信,还是 ...
- mysql begin end 用法_数据库:Mysql中“select ... for update”排他锁分析
作者:志波同学来源:https://mp.weixin.qq.com/s/8uH-7TD9ZRG4NCya80mOHg Mysql InnoDB 排他锁 用法:select - for update; ...
- mysql中begin end中变量定义_DECLARE只能用于BEGIN…END的开头部分定义局部变量,其作用范围只能在该BEGIN…END中。_学小易找答案...
[单选题]表达式select ((6%(7-5))+8)*9-2+(5%2) 的运算结果是______. [判断题]所有变量名@var1.@var2等必须以1个"@"开头,可以由当 ...
- Mysql中 begin..end使用遇到的坑
今天在用 Navicat 连接 mysql查询的时候,遇到了一个问题,如下代码块中所示: BEGINdeclare start_time datetime default '2021-05-06 00 ...
- mysql autocommit_【整理】MySQL 之 autocommit
mysql 默认是开启 auto commit 的.可以通过如下命令查看 session 级别和 global 级别的设置: mysql> select @@session.autocommit ...
- mysql中以下正确的sql是_总结MySQL中SQL语法的使用
--where子句操作符: where子句操作符 = 等于 <> 不等于(标准语法) != 不等于(非标准语法,可移植性差) < 小于 <= 小于等于 > 大于 > ...
最新文章
- 用计算机探索规律反思,《用计算器探索规律》教学反思
- springboot+vue用websocket消息推送和监听端口
- 编写字符串比较函数strcmp .
- 前端绘制绘制图表_绘制我的文学风景
- 期刊计算机仿真地址在哪,计算机仿真杂志社地址
- 富文本编辑器 CKeditor 配置使用 (带附件)
- JS图片自动或者手动滚动效果(支持left或者up)
- 基于STM32的有方科技(银而达)N58模块与OneNet平台互联
- 西门子PLC丨虚拟机运行仿真器供物理主机使用
- 这本书非常值得一读!《微习惯》读后感
- 十月下旬腾讯,网易游戏,百度迅雷校园招聘笔试题集锦(第271-330题)
- 微信小程序 之wx.previewImage图片预览(多张图片预览)
- 太火爆了!这一款小游戏火到把服务器搞瘫痪,合成大西瓜
- 计算机键盘上clr是什么意思,CLR是什么意思
- Android 获取摄像头像素,个数
- 六度空间 (bfs,广度优先)
- 苏炳添开始招研究生了!
- 爱因斯坦在20世纪初出的谜语
- 我的自制h1940红外遥控增强器(含软件及硬件制作方法)
- 【愚公系列】2023年01月 Java教学课程 004-Java语言三种注释