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;