SET TRANSACTION

Name

SET TRANSACTION -- define as características da transação corrente

Synopsis

SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
    { READ COMMITTED | SERIALIZABLE }
  

Descrição

Este comando define o nível de isolamento da transação. O comando SET TRANSACTION define as características para a transação SQL corrente, não possuindo qualquer efeito sobre nenhuma transação seguinte. Este comando não pode ser utilizado após a primeira consulta ou instrução que modifique os dados (SELECT, INSERT, DELETE, UPDATE, FETCH, COPY) da transação tiver sido executada. O comando SET SESSION CHARACTERISTICS define o nível de isolamento padrão para todas as transações da sessão. O comando SET TRANSACTION pode substitui-lo para uma transação individual.

O nível de isolamento de uma transação determina quais dados a transação pode enxergar quando outras transações estão processando ao mesmo tempo.

READ COMMITTED

Um comando enxerga apenas as linhas efetivadas (commit) antes do início da sua execução. Este é o padrão.

SERIALIZABLE

A transação corrente enxerga apenas as linhas efetivadas (commit) antes da primeira consulta ou instrução que modifique os dados ter sido executada nesta transação.

Tip: Intuitivamente serializável significa que, duas transações concorrentes deixam o banco de dados no mesmo estado que estas duas transações, executadas uma após a outra em qualquer ordem, deixaria.

Notas

O nível de isolamento padrão da transação também pode ser definido pelo comando

SET default_transaction_isolation = 'valor'

no arquivo de configuração. Consulte o Guia do Administrador para obter mais informações.

Compatibilidade

SQL92, SQL99

SERIALIZABLE é o nível de isolamento padrão do SQL. O PostgreSQL não possui os níveis de isolamento READ UNCOMMITTED e REPEATABLE READ. Devido ao controle de concorrência multi-versão, o nível serializável não é verdadeiramente serializável. Consulte o Guia do Usuário para obter mais informações.

No SQL existem outras duas características da transação que podem ser definidas com este comando: se a transação é de leitura apenas e o tamanho da área de diagnósticos. Nenhum destes conceitos é suportado pelo PostgreSQL.