mysql 隐式提交事务_mysql8 参考手册--无法回滚事务、隐式提交的语句

MySQL中的某些DDL语句和特殊操作会导致隐式提交,使得事务无法回滚。例如,创建或删除数据库、表、存储过程等。在隐式提交的语句执行后,即使发生错误,ROLLBACK也无法撤销所有影响。同时,事务控制语句如BEGIN、LOCK TABLES等也有特定的提交行为。此外,数据加载和管理语句也可能触发隐式提交,影响事务的原子性。
摘要由CSDN通过智能技术生成

无法回滚事务的语句

某些语句无法回滚。通常,这些语句包括数据定义语言(DDL)语句,例如创建或删除数据库的语句,创建,删除或更改表或存储例程的语句。

您应设计您的交易不包含此类声明。如果您在无法回滚的事务中早期发出了一个语句,然后又有另一个语句失败,则在这种情况下,通过发出一条ROLLBACK 语句无法回滚事务的全部效果 。

导致隐式提交的语句

本节中列出的语句(以及它们的任何同义词)隐式地结束当前会话中活动的任何事务,就像在执行语句之前执行COMMIT一样。

这些语句中的大多数在执行后也会导致隐式提交。其目的是在自己的特殊事务中处理每个这样的语句。事务控制和锁定语句是例外:如果隐式提交发生在执行之前,则另一个提交不会发生在执行之后。

定义或修改数据库对象的数据定义语言(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如果语句不提交事务TEMPORARY 时使用的关键字。(这不适用于确实引起提交的临时表(例如ALTER TABLE和)上的其他操作CREATE INDEX。)尽管没有发生隐式提交,但也无法回滚该语句,这意味着使用此类语句会导致事务性原子化。被侵犯。例如,如果使用CREATE TEMPORARY TABLE然后回滚事务,则该表仍然存在。

InnoDB中的CREATE TABLE语句作为单个事务处理。这意味着来自用户的回滚不会撤消用户在该事务期间所做的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复合语句”。

数据加载语句 LOAD DATA。 LOAD DATA仅对使用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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值