InnoDb транзакции с созданием операторов - PullRequest
0 голосов
/ 24 декабря 2011

Допускаются ли в транзакциях SQL-операторы, такие как CREATE TABLE tbl_name ......

Например:

begin;

CREATE TABLE .......;

sdfghjk;

rollback;

Таблица по-прежнему создается, несмотря на сбой оператора в транзакции и откат в конце. Есть ли способ предотвратить создание таблицы в случае сбоя оператора в транзакции?

Ответы [ 2 ]

1 голос
/ 24 декабря 2011

Если вам все еще нужно использовать таблицу, вы можете сделать create temporary table.....Он не фиксирует транзакцию, но будет удален при закрытии соединения.

1 голос
/ 24 декабря 2011

Операторы DDL допускаются внутри транзакций, но, как правило, транзакции на них не влияют.Из документации MySQL о том, что можно и нельзя откатить:

Некоторые операторы не могут быть откатаны.Как правило, они включают в себя операторы языка определения данных (DDL), такие как те, которые создают или отбрасывают базы данных, те, которые создают, отбрасывают или изменяют таблицы или хранимые подпрограммы.

Вы должны разрабатывать свои транзакции, чтобы не включать такиезаявления.Если в начале транзакции выполнить оператор, который нельзя откатить, а затем произойдет сбой другого оператора, полный эффект транзакции в таких случаях невозможно откатить с помощью оператора ROLLBACK.

Источник

...