View a markdown version of this page

SET CONSTRAINTS - Amazon Aurora DSQL

SET CONSTRAINTS

SET CONSTRAINTS establece el comportamiento de la comprobación de las restricciones de clave externa dentro de la transacción actual.

Sintaxis admitida

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

Descripción

SET CONSTRAINTS establece el comportamiento de la comprobación de restricciones en la transacción actual. Las restricciones IMMEDIATE se comprueban al final de cada instrucción. Las restricciones DEFERRED no se comprueban hasta que la transacción se confirma. Cada restricción tiene su propio modo IMMEDIATE o DEFERRED.

Al crear una restricción, se asigna una de estas tres características: DEFERRABLE INITIALLY DEFERRED, DEFERRABLE INITIALLY IMMEDIATE o NOT DEFERRABLE. La tercera clase es siempre IMMEDIATE y el comando SET CONSTRAINTS no la cambia. Las dos primeras clases inician todas las transacciones en el modo indicado, pero se puede cambiar su comportamiento dentro de una transacción mediante SET CONSTRAINTS.

SET CONSTRAINTS con una lista de nombres de restricciones cambia solo el modo de esas restricciones. Todas las restricciones nombradas deben ser aplazables. SET CONSTRAINTS ALL cambia el modo de todas las restricciones aplazables.

Cuando SET CONSTRAINTS cambia el modo de una restricción de DEFERRED a IMMEDIATE, el nuevo modo surtirá efecto de forma retroactiva. Aurora DSQL comprueba inmediatamente cualquier modificación de datos pendiente que, de otro modo, se habría aplazado hasta el final de la transacción. Si se infringe alguna de estas restricciones, el comando SET CONSTRAINTS produce un error y no cambia el modo de restricción.

Para ver una descripción de las opciones de aplazamiento (DEFERRABLE, NOT DEFERRABLE, INITIALLY DEFERRED, INITIALLY IMMEDIATE), consulte Aplazabilidad en la página CREATE TABLE.

Solo restricciones de clave externa

En Aurora DSQL, SET CONSTRAINTS se aplica solo a las restricciones de clave externa. Las restricciones de clave principal, única, NOT NULL y CHECK siempre se comprueban inmediatamente cuando se inserta o modifica una fila, incluso cuando se ejecuta SET CONSTRAINTS ALL DEFERRED.

Notas

Aurora DSQL cambia el comportamiento de las restricciones solo dentro de la transacción actual. Para usar SET CONSTRAINTS, ejecútelo dentro de un bloque de transacciones explícito.

Compatibilidad

Este comando cumple con el comportamiento definido en el estándar SQL, con la restricción de que Aurora DSQL solo admite el aplazamiento para restricciones de clave externa.