UNIQUE 制約により、NULLの複数の行が許可されます 2つのNULLであるため、値 値が同じであると見なされることはありません。
CHECKにも同様の考慮事項が適用されます 制約。式をTRUEにすることができます またはNULL (FALSEではありません )。繰り返しますが、NULL 値はチェックを通過します。
それを除外するには、列は必須 定義されるNOT NULL 。または、PRIMARY KEYにします PK列が定義されているためNOT NULL 自動的。詳細:
また、booleanを使用するだけです :
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
CHECK booleanの場合、制約はそれほど単純なものにすることができます。 桁。 TRUEのみ 許可されています。
REVOKEを使用することをお勧めします。
(またはGRANTではありません )DELETE およびTRUNCATE publicからの権限 (および他のすべての役割)単一の行が削除されないようにします。いいね:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;