【MySQL】自动提交 隐式提交

首先要知道事务有隐式和显示之分。

显示事务

开启事务:

start transaction;
begin;

SQL操作:

DML

结束事务:

commit;
rollback;

隐式事务

数据库中的SQL语句都作为单个事务去执行。这是由于数据库设置了自动提交。
设置一个系统变量autocommit

如何关闭自动提交

两种方式

方式一

set autocommit = false;
set autocommit = 0;

查看autcommit变量的值:

SHOW VARIABLES LIKE ‘autocommit’;

注意:
如果是 OFF 就说明关上了,再单独去执行SQL就不会自动提交了,直到手动执行commit才会提交
或者回滚

方式二:
执行start transaction 或者 begin系统就知道后面的一组SQL操作是一个事务了,就不会自动提交了。

补充
下面的补充知识是关于隐式提交数据的相关内容,很有必要要知道

  • 数据定义语言(DDL)
    数据库对象,指的就是数据库、表、视图、存储过程等结构。当我们使用CREATE、ALTER、DROP等语句去修改数据库对象时,就会隐式的提交前边语句所属于的事务.
Begin;			#开启事务
select ... 		#事务中的一条语句
update ...		#事务中的一条语句
.... 			#事务中的其他语句

Create table ... #隐式的提交前边语句所属于的事务
  • 隐式使用或修改MySQL数据库中的表
    当我们使用ALTER USER、CREATE USER、DROP USER、GRANT、RENAME USER、REVOKE、SET PASSWORD等语句时也会隐式的提交前边语句所属于的事务。
  • 事务控制或关于锁定的语句
    ①当我们在一个事务还没有提交或回滚时又使用start transaction,或者 begin 开启新的事物,会隐式提交上一个事务。
    ②当前的autocommit 为 OFF时,更改为ON时,也会隐式的提交前边语句所属的事务。
    ③使用LOCK TABLES、UNLOCK TABLES等关于锁定的语句也会隐式的提交前边语句所属的事务。
  • 加载数据的语句
    使用LOAD DATA语句来批量往数据库中导入数据时,也会隐式的提交前边语句所属的事务。
    关于MySQL复制的一些语句使用START SLAVE、STOP SLAVE、RESET SLAVE、CHANGE MASTER TO等语句时会隐式的提交前边语句所属的事务。
    其它的一些语句使用ANALYZE TABLE、CACHE INDEX、CHECK TABLE、FLUSH、LOAD INDEX INTO CACHE、OPTIMIZE TABLE、REPAIR TABLE、RESET等语句也会隐式的提交前边语句所属的事务。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值