sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cuándo verifica Postgres las restricciones únicas?

Postgres decide verificar las restricciones de tipo IMMEDIATELY en un momento diferente al propuesto en el estándar SQL.

Específicamente, la documentación para SET CONSTRAINTS estados (énfasis mío):

Postgres elige ejecutar esta consulta usando un plan que resulta en una colisión temporal para sort_order y INMEDIATAMENTE falla Tenga en cuenta que eso significa que para el mismo esquema y los mismos datos, la misma consulta puede funcionar o fallar según el plan de ejecución.

Tendrás que hacer la restricción DEFERRABLE o DEFERRABLE INITIALLY DEFERRED , que retrasa la verificación de la restricción hasta el final de la transacción o hasta el punto en que una declaración SET CONSTRAINTS ... IMMEDIATE se ejecuta.

Apéndice del comentario de @HansGinzel: