Команда DDL фиксирует транзакцию, даже если она не удалась - PullRequest
0 голосов
/ 05 июля 2018

Я запустил следующий запрос.

insert into emp(id,name) values(1,'ONKAR');

тогда я написал

Create table emp(id number(10));

это не удалось, поскольку таблица emp уже существует.

тогда я побежал

rollback;

затем

select * from emp;

возвращается 1 строка.

Я знаю любую команду DDL после того, как DML передаст данные. Но почему это происходит, даже если команда DDL не удалась?

1 Ответ

0 голосов
/ 05 июля 2018

Это потому, что Oracle выдает коммит как до, так и после DDL, согласно документации :

Oracle Database выдает неявный COMMIT при следующих обстоятельствах:

  • Перед любым синтаксически допустимым оператором языка определения данных (DDL), даже если оператор приводит к ошибке
  • После любого оператора языка определения данных (DDL), который завершается без ошибки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...