Un UNIQUE
il vincolo consente più righe con NULL
valori, perché due NULL
i valori non sono mai considerati uguali.
Considerazioni simili si applicano a CHECK
vincoli. Consentono all'espressione di essere TRUE
o NULL
(solo non FALSE
). Di nuovo, NULL
i valori superano il controllo.
Per escluderlo, la colonna deve essere definito NOT NULL
. Oppure impostala come PRIMARY KEY
poiché le colonne PK sono definite NOT NULL
automaticamente. Dettagli:
Inoltre, usa semplicemente boolean
:
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
Il CHECK
il vincolo può essere così semplice per un boolean
colonna. Solo TRUE
è consentito.
Potresti voler REVOKE
(o non GRANT
) il DELETE
e TRUNCATE
privilegi da public
(e tutti gli altri ruoli) per evitare che la singola riga venga mai eliminata. Come:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;