BEGIN

BEGIN — inicia um bloco de transação

Sinopse

BEGIN [ WORK | TRANSACTION ] [ modo_da_transação [, ...] ]

onde modo_da_transação é um entre:

    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
    READ WRITE | READ ONLY
    [ NOT ] DEFERRABLE

Descrição

O comando BEGIN inicia um bloco de transação, ou seja, todos os comandos após o comando BEGIN serão executados em uma única transação, até que seja fornecido um comando COMMIT ou ROLLBACK explícito. Por padrão (sem o comando BEGIN), o PostgreSQL executa as transações no modo autocommit (autoefetivação), ou seja, cada comando é executado em sua própria transação, e uma efetivação é realizada implicitamente no final do comando (se a execução for bem-sucedida, caso contrário, o comando é desfeito).

Os comandos são executadas mais rapidamente em um bloco de transação, porque o início/efetivação da transação requer uma atividade significativa de CPU e disco. A execução de vários comandos em uma transação também serve para garantir a consistência ao fazer várias alterações relacionadas: as outras sessões serão incapazes de ver os estados intermediários, onde nem todas as atualizações relacionadas foram feitas.

Se for especificado o nível de isolamento, o modo de leitura/escrita, ou o modo postergável, a nova transação terá estas características, como se o comando SET TRANSACTION tivesse sido executado.

Parâmetros

WORK
TRANSACTION

Palavras-chave opcionais. Não têm efeito.

Veja SET TRANSACTION para obter informações sobre o significado dos outros parâmetros desse comando.

Notas

O comando START TRANSACTION tem a mesma funcionalidade do comando BEGIN.

Deve ser usado COMMIT ou ROLLBACK para terminar o bloco de transação.

A execução do comando BEGIN em um bloco de transação provoca uma mensagem de advertência. O estado da transação não é afetado. Para aninhar transações em um bloco de transação, são usados os pontos de salvamento (veja SAVEPOINT).

Por razões de compatibilidade com as versões anteriores, as vírgulas entre os modos_de_transação sucessivos podem ser omitidas.

Exemplos

Para iniciar um bloco de transação:

BEGIN;

Conformidade

O comando BEGIN é uma extensão do PostgreSQL à linguagem. É equivalente ao comando do padrão SQL START TRANSACTION, cuja página de referência contém informações adicionais sobre compatibilidade.

O modo_da_transação DEFERRABLE (postergável) é uma extensão do PostgreSQL à linguagem.

A propósito, a palavra-chave BEGIN é usada para uma finalidade diferente no SQL incorporado. Se recomenda ter cuidado com a semântica de transação ao portar aplicações de banco de dados.

Referência externa

Controle de transação

Veja também

COMMIT, ROLLBACK, START TRANSACTION, SAVEPOINT