BEGIN

Nome

BEGIN -- inicia um bloco de transação

Sinopse

BEGIN [ WORK | TRANSACTION ]

Descrição

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

Os comandos são executados mais rapidamente em um bloco de transação, porque cada início/efetivação de transação requer uma atividade significativa de CPU e de disco. A execução de vários comandos dentro de uma transação também é útil para garantir a consistência ao se fazer várias modificações relacionadas: as outras sessões não conseguem ver os estados intermediários até que todas as modificações relacionadas tenham sido sido feitas.

Parâmetros

WORK
TRANSACTION
Palavras chave opcionais. Não produzem nenhum efeito.

Observações

START TRANSACTION possui a mesma funcionalidade do BEGIN.

Utilize COMMIT ou ROLLBACK para terminar um bloco de transação.

Executar o BEGIN dentro de um bloco de transação provoca uma mensagem de advertência. O estado da transação não é afetado.

Exemplos

Para iniciar um bloco de transação:

BEGIN;

Compatibilidade

O comando BEGIN é uma extensão do PostgreSQL à linguagem. Não existe o comando BEGIN explícito no padrão SQL; o início da transação é sempre implícito, terminando por um comando COMMIT ou ROLLBACK.

Outros sistemas de banco de dados relacionais podem oferecem a funcionalidade de auto-efetivação (autocommit) como uma comodidade.

Por coincidência, a palavra chave BEGIN é utilizada com uma finalidade diferente na linguagem SQL incorporada. Deve ser tomado muito cuidado com relação à semântica da transação ao migrar aplicações de banco de dados.

Veja também

COMMIT , ROLLBACK
SourceForge.net Logo