MySQL/MariaDB не откатывает транзакцию

Я пытаюсь совершить транзакцию, а затем откатиться.

Мой код следующий:

SET autocommit = OFF;
START TRANSACTION;
DROP TABLE IF EXISTS Test;
CREATE TABLE Test (test INT);
ROLLBACK;

Однако даже если я вызову ROLLBACK, таблица Test все равно будет создана.

Таблицы используют InnoDB. Я использую версию MariaDB 10.3.15.


person Lehks    schedule 07.06.2019    source источник
comment
Существует ли таблица до выполнения транзакции?   -  person Strawberry    schedule 07.06.2019
comment
Нет.   -  person Lehks    schedule 07.06.2019


Ответы (1)


https://dev.mysql.com/doc/refman/8.0/en/implicit-commit.html

... Оператор CREATE TABLE в InnoDB обрабатывается как одна транзакция. Это означает, что ROLLBACK от пользователя не отменяет инструкции CREATE TABLE, сделанные пользователем во время этой транзакции.

person Bill Karwin    schedule 07.06.2019