UNIQUE
omezení umožňuje více řádků s NULL
hodnoty, protože dvě NULL
hodnoty nejsou nikdy považovány za stejné.
Podobné úvahy platí pro CHECK
omezení. Umožňují, aby výraz byl TRUE
nebo NULL
(jen ne FALSE
). Opět NULL
hodnoty překročí kontrolu.
Chcete-li to vyloučit, sloupec musí být definováno NOT NULL
. Nebo jej nastavte jako PRIMARY KEY
protože sloupce PK jsou definovány NOT NULL
automaticky. Podrobnosti:
Také stačí použít boolean
:
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
CHECK
omezení může být tak jednoduché pro boolean
sloupec. Pouze TRUE
je povoleno.
Možná budete chtít REVOKE
(nebo ne GRANT
) DELETE
a TRUNCATE
oprávnění od public
(a všechny ostatní role), aby se zabránilo smazání jednoho řádku. Jako:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;