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;