SET CONSTRAINTS

Nome

SET CONSTRAINTS -- define os modos de verificação da restrição na transação corrente

Sinopse

SET CONSTRAINTS { ALL | nome [, ...] } { DEFERRED | IMMEDIATE }

Descrição

O comando SET CONSTRAINTS define o comportamento da verificação da restrição [1] [2] dentro da transação corrente. No modo IMMEDIATE (imediato), as restrições são verificadas ao final de cada comando. No modo DEFERRED (postergado), as restrições não são verificadas até a transação ser efetivada (commit).

Quando o modo da restrição é mudado para IMMEDIATE, o novo modo da restrição entra em vigor retroativamente: qualquer modificação de dado ativa, que deveria ter sido verificada ao término da transação (quando usado DEFERRED), é verificada durante a execução do comando SET CONSTRAINTS.

Ao ser criada, a restrição sempre recebe uma destas três características: INITIALLY DEFERRED (inicialmente postergada), INITIALLY IMMEDIATE DEFERRABLE (inicialmente imediata, postergável), ou INITIALLY IMMEDIATE NOT DEFERRABLE (inicialmente imediata, não postergável). A terceira classe não é afetada pelo comando SET CONSTRAINTS.

Atualmente, somente as restrições de chave estrangeira são afetadas por esta definição. As restrições de verificação (check) e de unicidade são sempre, efetivamente, não postergáveis.

Observações

Este comando somente altera o comportamento das restrições dentro da transação corrente. Portanto, se este comando for executado fora de um bloco de transação (par BEGIN/COMMIT), parecerá que não produziu nenhum efeito. Se for desejado mudar o comportamento de uma restrição sem haver a necessidade de executar o comando SET CONSTRAINTS em todas as transações, deve ser especificado INITIALLY DEFERRED ou INITIALLY IMMEDIATE quando a restrição for criada.

Compatibilidade

Este comando está em conformidade com o comportamento definido no padrão SQL, exceto pela limitação que, no PostgreSQL, somente se aplica às restrições de chave estrangeira.

Notas

[1]

As restrições de integridade, geralmente chamadas apenas de restrições, definem os estados válidos dos dados SQL restringindo os valores nas tabelas base. Uma restrição pode ser uma restrição de tabela, uma restrição de domínio ou uma asserção. (Second Informal Review Draft) ISO/IEC 9075:1992, Database Language SQL- July 30, 1992 (N. do T.)

[2]

Oracle — O comando SET CONSTRAINTS é utilizado para especificar, para uma determinada transação, se a restrição postergável será verificada após cada comando da DML, ou quando a transação for efetivada. SET CONSTRAINT[S] (N. do T.)

SourceForge.net Logo