本节中列出的语句(以及它们的任何同义词)隐式结束当前会话中任何活动的事务,就好像您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 PLUGINCREATE TABLE如果使用关键字,andDROP TABLE语句不会提交事务。TEMPORARY(这不适用于临时表上的其他操作,例如ALTER TABLEandCREATE 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 TOSLAVE 关键字在 MySQL 8.0.22 中被替换为 REPLICA。