Ich machte eine Nebenbedingung, wo die Spalte completed
bis true
markieren einige der anderen Spalten müsste einen Wert haben.Einschränkung auf Spalten basierend auf einzelnen Spalte nicht feuern
Aber aus irgendeinem Grund beschwert sich die Einschränkung nicht, wenn ich eine angegebene Spalte leer lasse, wenn completed
mit true
markiert ist. Ich habe auch absichtlich NULL eine angegebene Spalte eingefügt und immer noch keine Einschränkung.
Irgendwelche Ideen?
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)
);
Ausprobieren Verwenden die Prädikate mit getestet werden können 'NULL' NICHT aber nicht' = NULL'!. –