mysql variables--mysql自动提交的语句

导致隐式提交的语句

  • 本节中列出的语句(以及它们的同义词)隐式地结束当前会话中活动的任何事务,就像在执行语句之前进行了提交一样。
  • 大多数语句在执行后也会导致隐式提交。其目的是在它自己的特殊事务中处理每个这样的语句。
  • 事务控制和锁定语句是例外:如果隐式提交发生在执行之前,那么另一个提交不会发生在执行之后。

定义或修改数据库对象的数据定义语言(DDL)语句:

ALTER EVENT, ALTER FUNCTION, ALTER PROCEDURE, ALTER SERVER, ALTER TABLE, ALTER VIEW, CREATE DATABASE, CREATE EVENT, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE ROLE, CREATE SERVER, CREATE SPATIAL REFERENCE SYSTEM, CREATE TABLE, CREATE TRIGGER, CREATE VIEW, DROP DATABASE, DROP EVENT, DROP FUNCTION, DROP INDEX, DROP PROCEDURE, DROP ROLE, DROP SERVER, DROP SPATIAL REFERENCE SYSTEM, DROP TABLE, DROP TRIGGER, DROP VIEW, INSTALL PLUGIN, RENAME TABLE, TRUNCATE TABLE, UNINSTALL PLUGIN.

  • 如果使用临时关键字,则CREATE TABLE和DROP TABLE语句不提交事务。(这并不适用于临时表上的其他操作,如ALTER TABLE和CREATE INDEX,它们确实会导致提交。)然而,尽管没有发生隐式提交,但是也不能回滚语句,这意味着使用这些语句会导致事务原子性受到破坏。例如,如果使用创建临时表,然后回滚事务,则该表仍然存在。
  • InnoDB中的CREATE TABLE语句作为一个单独的事务处理。这意味着从用户回滚不会撤消用户在该事务期间所做的CREATE TABLE语句。
  • CREATE TABLE … SELECT会在语句执行之前和之后导致隐式提交。(CREATE TEMPORARY TABLE … SELECT没有commit发生)

隐式使用或修改mysql数据库中的表的语句

ALTER USER, CREATE USER, DROP USER, GRANT, RENAME USER, REVOKE, SET PASSWORD.

事务控制和锁定语句

BEGIN, LOCK TABLES, SET autocommit = 1 (if the value is not already 1), START TRANSACTION, UNLOCK TABLES.

  • ”UNLOCK TABLES“只有在有表被“LOCK TABLES”时才会提交事务
  • FLUSH TABLES WITH READ LOCK解锁用的UNLOCK TABLES 不会发生提交,因为后者语句不获取表级锁
  • 事务不能嵌套。这是在发出 START TRANSACTION语句或其同义词时对任何当前事务执行隐式提交的结果。
  • 在XA事务处于活动状态时,不能在事务中使用导致隐式提交的语句。
  • BEGIN … END不会导致隐式提交

数据加载语句

LOAD DATA INFILE. LOAD DATA INFILE 只对使用NDB存储引擎的表执行隐式提交

管理语句

ANALYZE TABLE, CACHE INDEX, CHECK TABLE, FLUSH, LOAD INDEX INTO CACHE, OPTIMIZE TABLE, REPAIR TABLE, RESET (但不包括 RESET PERSIST).

复制控制语句

START SLAVE, STOP SLAVE, RESET SLAVE, CHANGE MASTER TO

猜你喜欢

转载自blog.csdn.net/m0_37827567/article/details/86491962
今日推荐