BEGIN — inicia um bloco de transação
BEGIN [ WORK | TRANSACTION ] [modo_da_transação[, ...] ] ondemodo_da_transaçãoé um entre: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY [ NOT ] DEFERRABLE
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.
WORKTRANSACTIONPalavras-chave opcionais. Não têm efeito.
Veja SET TRANSACTION para obter informações sobre o significado dos outros parâmetros desse comando.
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.
Para iniciar um bloco de transação:
BEGIN;
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.