BEGIN
BEGIN — начать блок транзакции
Синтаксис
BEGIN [ AUTONOMOUS ] [ WORK | TRANSACTION ] [режим_транзакции
[, ...] ] Гдережим_транзакции
может быть следующим: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY [ NOT ] DEFERRABLE
Описание
BEGIN
начинает блок транзакции, то есть обозначает, что все операторы после команды BEGIN
и до явной команды COMMIT
или ROLLBACK
будут выполняться в одной транзакции. По умолчанию (без BEGIN
) Postgres Pro Shardman выполняет транзакции в режиме «autocommit» (автофиксация), то есть каждый оператор выполняется в своей отдельной транзакции, которая неявно фиксируется в конце оператора (если оператор был выполнен успешно; в противном случае транзакция откатывается).
В блоке транзакции операторы выполняются быстрее, так как для запуска/фиксации транзакции производится масса операций, нагружающих процессор и диск. Кроме того, выполнение нескольких операторов в одной транзакции позволяет обеспечить целостность при внесении серии связанных изменений; другие сеансы не видят промежуточное состояние, когда произошли ещё не все связанные изменения.
Если указан уровень изоляции, режим чтения/записи или устанавливается отложенный режим, новая транзакция получает те же характеристики, что и после выполнения SET TRANSACTION
.
В случае указания необязательного ключевого слова AUTONOMOUS
начинается автономная транзакция. Автономная транзакция может выполняться только внутри другой транзакции.
Параметры
AUTONOMOUS
Начинает автономную транзакцию внутри другой транзакции.
WORK
TRANSACTION
Необязательные ключевые слова, не оказывают никакого влияния.
За описанием других параметров обратитесь к SET TRANSACTION.
Примечания
START TRANSACTION
делает то же, что и BEGIN
.
Для завершения блока транзакции используйте COMMIT
или ROLLBACK
.
При попытке выполнить BEGIN
внутри уже начатого блока транзакции будет выдано предупреждение, а состояние транзакции не изменится. Для вложения подтранзакций внутри блока транзакций используйте точки сохранения (см. SAVEPOINT).
Для сохранения обратной совместимости допускается перечисление режимов_транзакции
без запятых.
Примеры
Начало блока транзакции:
BEGIN;
Совместимость
BEGIN
— это языковое расширение Postgres Pro Shardman. Эта команда равнозначна соответствующей стандарту SQL команде START TRANSACTION
, в описании которой можно найти дополнительные сведения о совместимости.
Значение DEFERRABLE
параметра режим_транзакции
является языковым расширением Postgres Pro Shardman.
По стечению обстоятельств ключевое слово BEGIN
имеет другое значение во встраиваемом SQL, поэтому при портировании приложений баз данных рекомендуется внимательно сверить семантику транзакций.