Spec-Zone .ru
спецификации, руководства, описания, API
|
Операторы, перечисленные в этом разделе (и любые синонимы для них) неявно, заканчивают любую транзакцию,
активную в текущем сеансе, как будто Вы сделали a COMMIT
прежде, чем выполнить оператор. С MySQL 5.5.3 большинство этих
операторов также вызывает неявную фиксацию после выполнения; для дополнительных деталей см. конец этого раздела.
Язык определения данных (DDL) операторы, которые
определяют или изменяют объекты базы данных. ALTER DATABASE ...
UPGRADE DATA DIRECTORY NAME
, ALTER
EVENT
, ALTER PROCEDURE
,
ALTER SERVER
, ALTER TABLE
, ALTER VIEW
, CREATE DATABASE
, CREATE EVENT
, CREATE INDEX
, CREATE PROCEDURE
, CREATE SERVER
, CREATE TABLE
, CREATE TRIGGER
, CREATE VIEW
, DROP DATABASE
, DROP EVENT
, DROP INDEX
, DROP PROCEDURE
, DROP SERVER
, DROP TABLE
, DROP TRIGGER
, DROP VIEW
, RENAME TABLE
, TRUNCATE TABLE
.
ALTER FUNCTION
, CREATE FUNCTION
и DROP FUNCTION
также вызовите неявную фиксацию когда использующийся с
сохраненными функциями, но не с UDFs. (ALTER FUNCTION
может только использоваться с сохраненными
функциями.)
ALTER TABLE
, CREATE TABLE
, и DROP TABLE
не фиксируйте транзакцию если TEMPORARY
ключевое слово используется. (Это не применяется к другим операциям на временных таблицах такой как
CREATE INDEX
, которые действительно вызывают фиксацию.) Однако,
хотя никакая неявная фиксация не происходит, ни один не может оператор откатываться. Поэтому,
использование таких операторов нарушит атомарность транзакции: Например, если Вы используете CREATE TEMPORARY TABLE
и затем откатывайте транзакцию, таблица
остается существующей.
CREATE TABLE
оператор в InnoDB
обрабатывается как единственная транзакция. Это означает это a ROLLBACK
от пользователя не отменяет CREATE TABLE
операторы пользователь сделаны во время той
транзакции.
CREATE TABLE ... SELECT
вызывает неявную фиксацию прежде и после
того, как оператор выполняется, когда Вы создаете невременные таблицы. (Никакая фиксация не
происходит для CREATE TEMPORARY TABLE ... SELECT
.) Это должно
предотвратить проблему во время репликации, где таблица могла быть составлена на ведущем устройстве
после отката, но сбоя, который будет записан в двоичном журнале, и поэтому не тиражирован в ведомое
устройство. Для получения дополнительной информации см. Ошибку #22865.
Операторы, которые неявно используют или изменяют таблицы
в mysql
база данных. 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
оператор или один из его синонимов.
Операторы, которые вызывают неявную фиксацию, не могут использоваться в транзакции XA, в то время
как транзакция находится в ACTIVE
состояние.
BEGIN
оператор отличается от использования BEGIN
ключевое слово, которое
запускает a BEGIN
... END
составной оператор. Последний не вызывает неявную фиксацию. См. Раздел 13.6.1,"BEGIN ... END
Синтаксис составного оператора".
Операторы загрузки данных. LOAD DATA INFILE
. LOAD DATA INFILE
вызывает неявную фиксацию только для таблиц, используя
NDB
Административные операторы. ANALYZE TABLE
, CACHE INDEX
, CHECK TABLE
, LOAD INDEX INTO CACHE
, OPTIMIZE TABLE
, REPAIR TABLE
.
Репликация проверяет утверждения. START SLAVE
, STOP SLAVE
, RESET SLAVE
, CHANGE MASTER TO
.
С MySQL 5.5.3 большинство операторов, которые ранее вызвали неявную фиксацию прежде, чем выполниться также, делает так после выполнения. Намерение состоит в том, чтобы обработать каждый такой оператор в своей собственной специальной транзакции, потому что это не может откатываться так или иначе. Следующий список обеспечивает дополнительные детали, имеющие отношение к этому изменению:
CREATE
TABLE
разновидности (CREATE
TABLE
для InnoDB
таблицы и CREATE TABLE ... SELECT
) это ранее было особыми случаями, больше не так
потому что CREATE TABLE
однородно вызывает неявную фиксацию прежде и после выполнения.
Управление транзакциями и операторы блокировки ведут себя как прежде.