Hice una restricción donde marcar la columna completed como true , algunas de las otras columnas tendrían que tener un valor.
Pero por alguna razón, la restricción no se queja cuando dejo una columna específica en blanco cuando completed marca como true . También inserté NULL a propósito en una columna específica y aún no tengo restricciones.
¿Algunas ideas?
CREATE TABLE info ( id bigserial PRIMARY KEY, created_at timestamptz default current_timestamp, posted_by text REFERENCES users ON UPDATE CASCADE ON DELETE CASCADE, title character varying(31), lat numeric, lng numeric, contact_email text, cost money, description text, active boolean DEFAULT false, activated_date date, deactivated_date date, completed boolean DEFAULT false, images jsonb, CONSTRAINT columns_null_check CHECK ( (completed = true AND posted_by != NULL AND title != NULL AND lat != NULL AND lng != NULL AND contact_email != NULL AND cost != NULL AND description != NULL AND images != NULL) OR completed = false) );En el Capítulo 9. Funciones y Operadores :
Para verificar si un valor es nulo o no, use los predicados:
expression IS NULL expression IS NOT NULLo los predicados equivalentes, pero no estándar:
expression ISNULL expression NOTNULL
Por lo tanto, no puede usar value != NULL para verificar valores nulos, solo puede usar value IS NULL y value IS NOT NULL .
Para valores booleanos son los mismos:
Los valores booleanos también se pueden probar usando los predicados
boolean_expression IS TRUE boolean_expression IS NOT TRUE boolean_expression IS FALSE boolean_expression IS NOT FALSE boolean_expression IS UNKNOWN boolean_expression IS NOT UNKNOWN