Tengo curiosidad si puedo confiar en cualquier orden particular de validación de NOT NULL, FOREIGN KEY, UNIQUE, CHECK
restricciones y BEFORE
desencadenantes.¿El estándar SQL especifica el orden de validación de la restricción y desencadena el disparo?
Por experiencia, sé que MySQL comprueba primero NOT NULL
, luego inicia el disparador BEFORE
, y luego comprueba las restricciones UNIQUE
. Oracle comprueba NOT NULL
después del desencadenador BEFORE
(creo que SQLServer hace lo mismo, pero no lo recuerda). ¿El estándar dice algo sobre el pedido o depende completamente del proveedor de DB?
Oracle no ** comprueba ** NOT NULL hasta después de activadores 'before'. Eso permite que el activador 'before' cambie los valores de manera que ya no sean nulos. –
@Shannon Severance: Sí, lo siento, estaba pensando en mysql ... Corregido – a1ex07
Puede descargar un [borrador] (http://www.wiscorp.com/sql200n.zip) (Enlace tomado de Wikipedia) del más estándar reciente y examínelo usted mismo (no puedo encontrar ninguna definición) –