DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

COMMIT и ROLLBACK

Когда над базой данных выполняется оператор 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 может произвести откат.
 









jAntivirus