Когда над базой данных выполняется оператор COMMIT (завершить), транзакция заканчивается и:
• Вся работа, проделанная этой транзакцией, сохраняется.
и Другие сеансы могут видеть, какие изменения были внесены этой транзакцией.
• Все блокировки, установленные транзакцией, снимаются. Синтаксис оператора COMMIT:
COMMIT
Необязательное ключевое слово WORK (работа) применяется для повышения удобочитаемости программ. До тех пор пока транзакция не завершена, внесенные ею изменения может видеть только тот сеанс, который ее выполняет (рис. 4.2). Вначале сеанс А выдает оператор INSERT. Сеанс В обращается с запросом к таблице rooms, но не видит информацию, внесенную сеансом А, так как оператор INSERT не завершен. Затем сеанс А завершает операцию, и во втором операторе SELECT сеанс В увидит вновь введенные строки.
Когда над базой данных выполняется оператор ROLLBACK (откатить), транзакция заканчивается и:
• Вся работа, проделанная этой транзакцией, отменяется, как если бы транзакция и не выполнялась.
• Все блокировки, установленные транзакцией, снимаются. Синтаксис оператора ROLLBACK:
ROLLBACK [WORK]
Как и в операторе COMMIT, ключевое слово WORK необязательно и
применяется для удобства чтения программ. Явный оператор ROLLBACK обычно используется в том случае, когда программа обнаруживает ошибку и ее выполнение прекращается. Если сеанс отключается от базы данных без окончания текущей транзакции при помощи оператора COMMIT или ROLLBACK, транзакция автоматически откатывается базой данных.
Внимание
В SQL*Plus автоматически выполняет оператор COMMIT, когда пользователь выходит из программы. Кроме того, средство автозавершения (autocommit) выполняет COMMIT после каждого SQL-оператора. Это не оказывает влияния на SQL-операторы внутри блока PL/SQL, так как SOL*Plus не управляет ходом программы до окончания блока. Если сеанс SQL*Plus завершается во время транзакции, то COMMIT выполняется неявно. Если оператор заканчивается ошибкой, SQL*Plus может произвести откат.
< Предыдущая | Следующая > |
---|