DML не фиксируется по умолчанию.
данные, введенные на первом и третьем шагах, сохраняются, и мне не нужно давать никаких явных подтверждений
Записи, вставленные вшаг 1 был зафиксирован, когда вы выполнили оператор CREATE TABLE на шаге 2. Вы знаете, что команды DDL в Oracle выдают коммит до и после выполнения DDL, поэтому вы не должны удивляться тому, что открытая транзакция фиксируется при создании таблицы.
Передача данных из шага 3 отличается.Я повторяю еще раз, что DML не фиксируется автоматически в Oracle.Однако часто клиентское программное обеспечение, которое мы используем для подключения к базе данных, может быть настроено на выдачу коммитов после каждого оператора.
Например, Autocommit
- это опция в таких средах разработки, как TOAD и PL / SQL Developer.Если вы используете такой инструмент, отметьте Инструменты > Предпочтения для соответствующую настройку (точный путь может отличаться для конкретного продукта).Соединения JDBC автоматическая фиксация по умолчанию .То же самое для Microsoft ODBC.В SQL * Plus по умолчанию AUTOCOMMIT = OFF, но его можно включить.
Кроме того, SQL * Plus будет фиксировать строки при выходе, будь то путем подключения к новому сеансу или ввода exit
(но не путем неконтролируемого выхода, такого как уничтожение клиентского процесса через диспетчер задач).Начиная с Oracle 11gR2 такое поведение настраивается через системную переменную EXITCOMMIT ;по умолчанию установлено значение ON.
Вот демоверсия db <> fiddle , которая демонстрирует, что DML перед утверждением инструкции DDL, но - на клиенте, где AUTOCOMMIT выключен - DML послезаявление можно откатить.