En UNIQUE
begränsning tillåter flera rader med NULL
värden, eftersom två NULL
värden anses aldrig vara desamma.
Liknande överväganden gäller för CHECK
begränsningar. De tillåter uttrycket att vara TRUE
eller NULL
(bara inte FALSE
). Återigen, NULL
värden passerar kontrollen.
För att utesluta det, måste kolumnen definieras NOT NULL
. Eller gör den till PRIMARY KEY
eftersom PK-kolumner är definierade NOT NULL
automatiskt. Detaljer:
Använd bara boolean
:
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
CHECK
begränsning kan vara så enkelt för en boolean
kolumn. Endast TRUE
är tillåtet.
Du kanske vill REVOKE
(eller inte GRANT
) DELETE
och TRUNCATE
privilegier från public
(och alla andra roller) för att förhindra att den enda raden någonsin tas bort. Gilla:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;