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;