En UNIQUE
begrænsning tillader flere rækker med NULL
værdier, fordi to NULL
værdier anses aldrig for at være de samme.
Lignende overvejelser gælder for CHECK
begrænsninger. De tillader udtrykket at være TRUE
eller NULL
(bare ikke FALSE
). Igen, NULL
værdier kommer forbi kontrollen.
For at udelukke det skal kolonnen skal være defineret NOT NULL
. Eller gør det til PRIMARY KEY
da PK-kolonner er defineret NOT NULL
automatisk. Detaljer:
Brug også bare boolean
:
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
CHECK
begrænsning kan være så simpel for en boolean
kolonne. Kun TRUE
er tilladt.
Du ønsker måske at REVOKE
(eller ikke GRANT
) DELETE
og TRUNCATE
privilegier fra public
(og alle andre roller) for at forhindre, at den enkelte række nogensinde bliver slettet. Ligesom:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;