15.3.3 Операторы, вызывающие неявное подтверждение
Операторы, перечисленные в этом разделе (и любые их синонимы), неявно завершают любую транзакцию, активную в текущем сеансе, как если бы вы выполнили 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и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, потому что последний оператор не получает блокировок таблиц на уровне таблиц.Транзакции не могут быть вложены. Это следствие неявного подтверждения, производимого для любой текущей транзакции при выполнении оператора
START TRANSACTIONили его синонимов.Операторы, вызывающие неявное подтверждение, не могут быть использованы в транзакции XA, пока транзакция находится в состоянии
ACTIVE.Оператор
BEGINотличается от использования ключевого словаBEGIN, которое запускает составной операторBEGIN ... END. Последний не вызывает неявного подтверждения. См. Раздел 15.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 REPLICA,STOP REPLICA,RESET REPLICA,CHANGE REPLICATION SOURCE TO.
© 2025 Oracle
Licensed under the GPLv2 License.