Um
UNIQUE
restrição permite várias linhas com NULL
valores, porque dois NULL
os valores nunca são considerados iguais. Considerações semelhantes se aplicam a
CHECK
restrições. Eles permitem que a expressão seja TRUE
ou NULL
(só não FALSE
). Novamente, NULL
os valores passam da verificação. Para descartar isso, a coluna deve ser definido
NOT NULL
. Ou transforme-a em PRIMARY KEY
já que as colunas PK são definidas NOT NULL
automaticamente. Detalhes:Além disso, basta usar
boolean
:CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
O
CHECK
restrição pode ser tão simples para um boolean
coluna. Apenas TRUE
é permitido. Você pode querer
REVOKE
(ou não GRANT
) o DELETE
e TRUNCATE
privilégios de public
(e todas as outras funções) para evitar que uma única linha seja excluída. Curti:REVOKE DELETE, TRUNCATE ON public.onerow FROM public;