【MySQL】自动提交 隐式提交

您所在的位置:网站首页 mysql不自动提交 【MySQL】自动提交 隐式提交

【MySQL】自动提交 隐式提交

2023-09-02 02:27| 来源: 网络整理| 查看: 265

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

显示事务

开启事务:

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等语句也会隐式的提交前边语句所属的事务。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3