View a markdown version of this page

SET CONSTRAINTS - Amazon Aurora DSQL

SET CONSTRAINTS

SET CONSTRAINTS define o comportamento da verificação de restrições de chave estrangeira dentro da transação atual.

Sintaxe compatível

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

Descrição

SET CONSTRAINTS define o comportamento da verificação de restrições dentro da transação atual. As restrições IMMEDIATE são verificadas no final de cada instrução. As restrições DEFERRED não são verificadas até que a transação seja confirmada. Cada restrição tem seu próprio modo IMMEDIATE ou DEFERRED.

Ao criar uma restrição, você atribui a ela uma das três características: DEFERRABLE INITIALLY DEFERRED, DEFERRABLE INITIALLY IMMEDIATE ou NOT DEFERRABLE. A terceira classe é sempre IMMEDIATE, e o comando SET CONSTRAINTS não a altera. As duas primeiras classes iniciam cada transação no modo indicado, mas seu comportamento pode ser alterado dentro de uma transação por meio de SET CONSTRAINTS.

SET CONSTRAINTS com uma lista de nomes de restrições altera o modo somente dessas restrições. Todas as restrições nomeadas devem ser adiáveis. SET CONSTRAINTS ALL altera o modo de todas as restrições adiáveis.

Quando SET CONSTRAINTS altera o modo de uma restrição de DEFERRED para IMMEDIATE, o novo modo entra em vigor retroativamente. O Aurora DSQL verifica imediatamente quaisquer modificações de dados pendentes que, de outra forma, teriam sido adiadas até o final da transação. Se alguma dessas restrições for violada, o comando SET CONSTRAINTS falhará e não alterará o modo da restrição.

Consulte uma descrição das opções de adiamento (DEFERRABLE, NOT DEFERRABLE, INITIALLY DEFERRED, INITIALLY IMMEDIATE) em Possibilidade de adiamento na página CREATE TABLE.

Somente restrições de chave estrangeira

No Aurora DSQL, SET CONSTRAINTS se aplica somente a restrições de chave estrangeira. As restrições NOT NULL e CHECK de chave primária e exclusivas são sempre verificadas imediatamente quando uma linha é inserida ou modificada, mesmo quando você executa SET CONSTRAINTS ALL DEFERRED.

Observações

O Aurora DSQL altera o comportamento das restrições somente dentro da transação atual. Para usar SET CONSTRAINTS, execute-o dentro de um bloco de transação explícito.

Compatibilidade

Este comando está em conformidade com o comportamento definido no padrão SQL, com a restrição de que o Aurora DSQL oferece suporte ao adiamento somente para restrições de chave estrangeira.