官网地址:MySQL :: MySQL 5.7 Reference Manual :: 13.3.2 Statements That Cannot Be Rolled Back
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
有些语句不能回滚。一般来说,这些包括数据定义语言(DDL)语句,例如创建或删除数据库的语句,创建、删除或更改表或存储例程的语句。
您应该设计您的事务不包括这样的语句。如果您在事务的早期发布了一个不能回滚的语句,然后又有一个语句失败了,那么在这种情况下,不能通过发布一个 ROLLBACK 声明。
MySQL :: MySQL 5.7 Reference Manual :: 13.3.3 Statements That Cause an Implicit Commit
本节中列出的语句(以及它们的任何同义词)隐式地终止当前会话中任何活动的事务,就像您已经完成了COMMIT 在执行声明之前。
这些语句中的大多数在执行后也会导致隐式提交.其目的是在自己的特殊事务中处理每个这样的语句,因为无论如何它都不能回滚。事务控制和锁定语句是例外:如果一个隐式提交发生在执行之前,另一个在执行之后不会发生。
-
定义或修改数据库对象的数据定义语言(DDL)语句。 ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME , ALTER EVENT , ALTER PROCEDURE , ALTER SERVER , ALTER TABLE , ALTER TABLESPACE , ALTER VIEW , CREATE DATABASE , CREATE EVENT , CREATE INDEX , CREATE PROCEDURE , CREATE SERVER , CREATE TABLE , CREATE TABLESPACE , CREATE TRIGGER , CREATE VIEW , DROP DATABASE , DROP EVENT , DROP INDEX , DROP PROCEDURE , DROP SERVER , DROP TABLE , DROP TABLESPACE , DROP TRIGGER , DROP VIEW , INSTALL PLUGIN , RENAME TABLE , TRUNCATE TABLE , UNINSTALL PLUGIN .
ALTER FUNCTION , CREATE FUNCTION 和 DROP FUNCTION 当使用存储函数时,也会导致隐式提交,但不能使用可加载函数。(ALTER FUNCTION 只能用于存储函数。)
CREATE TABLE 和 DROP TABLE 声明不提交事务,如果
TEMPORARY
关键词。(这并不适用于临时表格中的其他操作,例如:ALTER TABLE 和CREATE INDEX 会导致犯罪。)然而,虽然没有隐式提交发生,但是也不能回滚语句,这意味着这种语句的使用会导致违反事务原子性。例如,如果你使用CREATE TEMPORARY TABLE 然后回滚事务,表仍然存在.…CREATE TABLE 声明
InnoDB
作为一个事务处理。这意味着 ROLLBACK 用户不会撤销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 因为后一个语句不会获得表级锁。
事务不能嵌套。这是您在发布A时为任何当前事务执行的隐式提交的结果。START TRANSACTION 声明或其同义词之一。
导致隐式提交的语句不能在事务位于
ACTIVE
国家。…BEGIN 声明不同于使用
BEGIN
关键词开始 BEGIN ... END 复合陈述。后者不会引起暗示的承诺。看 第13.6.1节,"开始。..最后复合语句" . -
数据加载语句。 LOAD DATA . LOAD DATA 只对使用 NDB 存储引擎。
-
行政报表。 ANALYZE TABLE , CACHE INDEX , CHECK TABLE , FLUSH , LOAD INDEX INTO CACHE ,OPTIMIZE TABLE ,REPAIR TABLE , RESET .
-
复制控制语句 .START SLAVE ,STOP SLAVE , RESET SLAVE , CHANGE MASTER TO .