BEGIN
BEGIN
Начало отложенного транзакционного блока.
Синтаксис
BEGIN [ WORK | TRANSACTION ]
Параметры
Необязательные ключевые слова, делающие команду SQL более наглядной.
Результаты
- BEGIN. Сообщение выдается в начале транзакции.
- NOTICE: BEGIN: already transaction in progress. Сообщение выдается в том случае, если в сеансе PostgreSQL уже имеется незавершенная транзакция (вложение транзакций в PostgreSQL не допускается). Состояние текущей незавершенной транзакции при этом не изменяется.
Описание
По умолчанию транзакции PostgreSQL выполняются в непосредственном режиме (также называемом режимом с автоматической фиксацией). В этом режиме для каждой команды пользователя автоматически создается отдельная транзакция, которая либо автоматически фиксируется в базе данных, либо откатывается в зависимости от результата выполнения команды.
Команда BEGIN сообщает серверу о создании транзакцнопного блока в отложенном режиме. В этом режиме команды, передаваемые серверу, сохраняются в очереди до получения сервером команды COMMIT. Также возможен откат транзакции по команде ROLLBACK или при неожиданном отключении пользователя от базы данных.
Отложенный режим часто используется при работе с несколькими взаимосвязанными таблицами, а также для повышения общей эффективности операций с базой данных. Выполнение команд в отложенном режиме снижает затраты ресурсов процессора и дискового пространства, поскольку на каждый блок команд используется только одна операция его фиксации.
При фиксации транзакции сервер пытается выполнить все обновления, входящие в нее. При отсутствии ошибок обновление проходит успешно, в противном случае весь транзакционный блок откатывается.