MySQL--当事务遇到DDL命令
众所周知MySQL的DDL语句是非事务的,即不能对DLL语句进行回滚操作,哪在事务中包含DDL语句会怎样呢?
如:
#禁用自动提交 set autocommit=off; #创建tb1 create table tb1(id int auto_increment primary key,c1 int); #开始事务 start transaction; #插入数据 insert into tb1(c1) select 1; insert into tb1(c1) select 2; insert into tb1(c1) select 3; #创建tb2 create table tb2(id int auto_increment primary key,c1 int);
这时候如果执行rollback,会发现插入到tb1中数据没有被回滚:
如果查看binlog:
在创建tb2之前,有一个commit操作将上面语句中的事务进行提交,因此虽然后面执行了rollback操作,但实际上rollback的是另外一个空事务,所以没有任何数据发生“回滚”。
=============================================================================
在执行研发同事提交的脚本时,应当将DDL和DML语句以及DCL语句严格分开,避免事务被隐性“破坏”,导致误操作情况发生。
比如你打开一个事务正在修改数据,恰好研发同事找你在这个库上新建一个表,剪完你发现自己数据改错了,此时再想回滚就悲剧啦!
又比如研发给你一个事务脚本,中间夹渣一个DDL语句,导致事务“中途”提交一次,等最后发现异常要回滚却发现只能回滚一部分。
=============================================================================
总结:
当执行到DDL语句时,会隐式的将当前回话的事务进行一次“COMMIT”操作,因此在MySQL中执行DDL语句时,应该严格地将DDL和DML完全分开,不能混合在一起执行。
=============================================================================
=============================================================================
转载于:https://www.cnblogs.com/TeyGao/p/7622155.html
MySQL--当事务遇到DDL命令相关推荐
- Redis的事务:相关命令 watch 与mysql事务的区别
Redis事务的概念: Redis 事务的本质是一组命令的集合. 事务支持一次执行多个命令,一个事务中所有命令都会被序列化.在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不 ...
- MySQL学习思维导图(MySQL简介、SQL基础命令、约束、单表查询、多表查询、内置函数、存储过程、视图、事务、索引)
MySQL学习思维导图 内容包括:MySQL简介.SQL基础命令.约束.单表查询.多表查询.内置函数.存储过程.视图.事务.索引 文章目录 MySQL学习思维导图 一.MySQL简介 二.SQL基础命 ...
- mysql mongodb 事务_MySQL PK MongoDB:多文档事务支持,谁更友好?
原标题:MySQL PK MongoDB:多文档事务支持,谁更友好? 作者介绍 贺春旸,凡普金科DBA团队负责人,<MySQL管理之道:性能调优.高可用与监控>第一.二版作者,曾任职于中国 ...
- MySql的事务操作与演示样例
事务就是一个逻辑工作单元的一系列步骤. 事务是用来保证数据操作的安全性 事务的特征: Atomicity(原子性) Consistency(稳定性,一致性) Isolation(隔离性) Durabi ...
- MySQL 之事务 及 其隔离级别
MySQL 之事务 及 其隔离级别 /* 事务:表示一组操作(sql),要么同时成功,要么同时失败,那么这种操作就构成了一个事务. 例如: 张三 给 李四 转账 500元 (1)把张三的余额减少500 ...
- mysql数据库事务隔离级别演示
mysql数据库事务隔离级别演示 关键词: 一.基本概念 二.事务的四个特性(ACID) 三.事务的用法 3.1 相关命令 3.2 使用步骤 四.数据库的隔离级别 五.示例演示(每组事务结束手动com ...
- 数据库-Mysql使用学习笔记(命令行及图形化界面)
目录 环境及软件 安装目录 教程 启动Mysql服务 图形化 命令行 连接和断开服务器 图形化 命令行 SQL语句 介绍 分类 自带表介绍 注释 数据库的添加与删除 表的添加与删除 查询语法 基础查询 ...
- mysql执行事务的语句_详解MySQL执行事务的语法和流程
摘要:MySQL 提供了多种存储引擎来支持事务. MySQL 提供了多种存储引擎来支持事务.支持事务的存储引擎有 InnoDB 和 BDB,其中,InnoDB 存储引擎事务主要通过 UNDO 日志和 ...
- mysql ef6 事务_使用事务-EF6 | Microsoft Docs
使用事务Working with Transactions 10/23/2016 本文内容 备注 仅限 EF6 及更高版本 - 此页面中讨论的功能.API 等已引入实体框架 6.EF6 Onwards ...
- mysql+实例夯住的监控_Nagios 里面监控MySQL 监控事务夯住(RUNNING)报警通知
序言: 业务报警订单提交异常,页面一直没有反应,排查后是事务没有提交或者回滚导致,想到如果及时监控事务的运行状态报警出来,那么就可以及时排查出问题所在,方便运营处理,所以自己就弄了一个shell脚本放 ...
最新文章
- 原创 | 浅议数据资产市场
- linux系统学习之vi编辑
- 你必须具有权限才能读取此对象_win10中随心所欲设置文件/文件夹访问权限,可以轻松做到,并不难...
- CentOS7.X中使用yum安装nginx完全教程
- iOS逆向之深入解析如何使用Theos开发插件
- Happy Birthday
- android root权限函数,android 4.4下app永久获取root权限的方法
- Scrum 冲刺博客集合
- vue 写门户网站_你不得不知道的Vue项目技巧
- 利用DataGrid的超级联接传值
- 【秒懂音视频开发】16_AAC解码实战
- 清明上河图密码2笔记
- oracle 财务云优势,Oracle ERP云助力财务团队提升业务弹性
- SpringCloud GateWay网关
- 「POJ2826」An Easy Problem?!【计算几何】
- 自动发送企业微信通知,让我来教你真的超简单
- 术语:游戏机制(Game Mechanics)
- Ambari添加快速链接Quick Links
- 【Python】爬取了近3000条单身女生的数据,究竟她们理想的择偶标准是什么?
- wangEditor 初始化设置行高、字体和字体大小