本节中列出的语句(以及它们的任何同义词)隐式结束当前会话中任何活动的事务,就好像您COMMIT
在执行该语句之前执行了操作一样。
大多数这些语句在执行后也会导致隐式提交。目的是在其自己的特殊事务中处理每个此类语句。事务控制和锁定语句是例外:如果隐式提交发生在执行之前,则另一个不会发生在执行之后。
定义或修改数据库对象的数据定义语言 (DDL) 语句。
ALTER EVENT
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ALTER FUNCTION
_ALTER PROCEDURE
_ALTER SERVER
_ALTER TABLE
_ALTER TABLESPACE
_ALTER VIEW
_CREATE DATABASE
_CREATE EVENT
_CREATE FUNCTION
_CREATE INDEX
_CREATE PROCEDURE
_CREATE ROLE
_CREATE SERVER
_CREATE SPATIAL REFERENCE SYSTEM
_CREATE TABLE
_CREATE TABLESPACE
_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 TABLESPACE
_DROP TRIGGER
_DROP VIEW
,,,, .INSTALL PLUGIN
_RENAME TABLE
_TRUNCATE TABLE
_UNINSTALL PLUGIN
CREATE TABLE
如果使用关键字,andDROP TABLE
语句不会提交事务。TEMPORARY
(这不适用于临时表上的其他操作,例如ALTER TABLE
andCREATE INDEX
,它们确实会导致提交。)但是,虽然没有隐式提交发生,但语句也不能回滚,这意味着使用此类语句会导致事务原子性被侵犯。例如,如果您使用CREATE TEMPORARY TABLE
然后回滚事务,该表仍然存在。中的
CREATE TABLE
语句InnoDB
作为单个事务处理。这意味着ROLLBACK
来自用户的 a 不会撤消CREATE TABLE
用户在该事务期间所做的语句。CREATE TABLE ... SELECT
当您创建非临时表时,会在执行语句之前和之后导致隐式提交。(没有提交发生CREATE TEMPORARY TABLE ... SELECT
。)隐式使用或修改数据库中表的语句
mysql
。ALTER USER
,,,,,, .CREATE USER
_DROP USER
_GRANT
_RENAME USER
_REVOKE
_SET PASSWORD
事务控制和锁定语句。
BEGIN
,LOCK TABLES
,SET autocommit = 1
(如果值还不是 1),START TRANSACTION
,UNLOCK TABLES
.UNLOCK TABLES
仅当当前已锁定任何表LOCK TABLES
以获取非事务表锁时才提交事务。UNLOCK TABLES
后续不会发生提交,FLUSH TABLES WITH READ LOCK
因为后一条语句不获取表级锁。事务不能嵌套。这是在您发出
START TRANSACTION
语句或其同义词之一时对任何当前事务执行的隐式提交的结果。ACTIVE
当事务处于某个状态 时,导致隐式提交的语句不能在 XA 事务中使用 。该
BEGIN
语句不同于开始复合语句的BEGIN
关键字 的使用。BEGIN ... END
后者不会导致隐式提交。请参阅第 13.6.1 节,“BEGIN ... END 复合语句”。行政报表。
ANALYZE TABLE
,CACHE INDEX
,CHECK TABLE
,FLUSH
,LOAD INDEX INTO CACHE
,OPTIMIZE TABLE
,REPAIR TABLE
,RESET
(但不是RESET PERSIST
)。复制控制语句。
START REPLICA
,,,, .STOP REPLICA
_RESET REPLICA
_CHANGE REPLICATION SOURCE TO
_CHANGE MASTER TO
SLAVE 关键字在 MySQL 8.0.22 中被替换为 REPLICA。