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;