UNIQUE ograniczenie zezwala na wiele wierszy z NULL wartości, ponieważ dwa NULL wartości nigdy nie są uważane za takie same.
Podobne uwagi dotyczą CHECK ograniczenia. Pozwalają, aby wyrażenie było TRUE lub NULL (tylko nie FALSE ). Ponownie, NULL wartości przechodzą kontrolę.
Aby to wykluczyć, kolumna musi być zdefiniowany NOT NULL . Lub ustaw PRIMARY KEY ponieważ kolumny PK są zdefiniowane NOT NULL automatycznie. Szczegóły:
Po prostu użyj boolean :
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
CHECK ograniczenie może być tak proste dla boolean kolumna. Tylko TRUE jest dozwolone.
Możesz REVOKE
(lub nie GRANT ) DELETE i TRUNCATE uprawnienia z public (i wszystkich innych ról), aby zapobiec usunięciu pojedynczego wiersza. Na przykład:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;