mysql事务中ddl语句的隐式提交

1、当执行到DDL语句时,会隐式的将当前回话的事务进行一次“COMMIT”操作,因此在MySQL中执行DDL语句时,应该严格地将DDL和DML完全分开,不能混合在一起执行。
2、为什么DDL语句会隐式提交?
因为DDL是数据定义语言,在我们的数据库中承担着创建,删除和修改的重要的职责。一旦发生问题,带来的后果很可能是不可估量的。
二是在每执行完一次后就进行提交,可以保证流畅性,数据不会发生阻塞,同时也会提高数据库的整体性能。
3、DDL和DML混和执行可能带来的风险:
3.1比如你打开一个事务正在修改数据,恰好研发同事找你在这个库上新建一个表,建完表你发现自己数据改错了,此时再想回滚就GG了!
3.2又比如研发给你一个事务脚本,中间夹在一个DDL语句,导致事务“中途”提交一次,等最后发现异常要回滚却发现只能回滚一部分。
4、DML语句补充知识点
set autocommit = 0; //1是自动提交,当前session禁用自动提交事物,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务。
//这里写insert或update等语句,source命令执行sql文件也有效
commit; //或者rollback;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值