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.