Транзакции

Транзакция начинается с первого выполняемого SQL-оператора (кроме CONNECT) в пользовательской программе. Когда текущая транзакция заканчивается, следующая начинается с очередного исполняемого SQL-оператора обработки данных.

Декларативные операторы не являются элементами транзакций, поэтому к ним не применяются операции фиксирования или отката.

Операции определения данных всегда выполняются в режиме AUTOCOMMIT, т.е. откат этих операций не поддерживается. Например, если был выполнен оператор CREATE TABLE или ALTER TABLE, то отказаться от созданной таблицы или модификации ее структуры можно только путем явного удаления таблицы оператором DROP TABLE или (если это допустимо) последующей повторной модификацией.

Транзакция заканчивается одним из следующих способов:

  • выполнение операции COMMIT либо ROLLBACK, с или без опции RELEASE. Эти операторы фиксируют изменения в БД или выполняют откат к предыдущему состоянию;

  • выполнение любого SQL-оператора определения данных (например, ALTER, CREATE, GRANT), которые инициируют автоматическое подтверждение транзакции (COMMIT) перед своим выполнением;

  • транзакция автоматически завершается при аварийном завершении пользовательского приложения. В этом случае ядро выполняет операцию ROLLBACK;

  • транзакция автоматически завершается при аварийном завершении ядра СУБД ЛИНТЕР (например, при сбое оборудования или отказе операционной системы). В этом случае при рестарте ядра СУБД незавершенная (прерванная) транзакция также выполняет откат.