Een UNIQUE
beperking staat meerdere rijen toe met NULL
waarden, omdat twee NULL
waarden worden nooit als hetzelfde beschouwd.
Soortgelijke overwegingen zijn van toepassing op CHECK
beperkingen. Ze zorgen ervoor dat de uitdrukking TRUE
. is of NULL
(alleen niet FALSE
). Nogmaals, NULL
waarden komen voorbij de controle.
Om dat uit te sluiten, moet de kolom moet worden gedefinieerd NOT NULL
. Of maak het de PRIMARY KEY
aangezien PK-kolommen zijn gedefinieerd NOT NULL
automatisch. Details:
Gebruik ook gewoon boolean
:
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
De CHECK
beperking kan zo eenvoudig zijn voor een boolean
kolom. Alleen TRUE
is toegestaan.
Misschien wil je REVOKE
(of niet GRANT
) de DELETE
en TRUNCATE
privileges van public
(en alle andere rollen) om te voorkomen dat de enkele rij ooit wordt verwijderd. Vind ik leuk:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;