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;