Sebuah UNIQUE kendala memungkinkan beberapa baris dengan NULL nilai, karena dua NULL nilai tidak pernah dianggap sama.
Pertimbangan serupa berlaku untuk CHECK kendala. Mereka mengizinkan ekspresi menjadi TRUE atau NULL (bukan FALSE ). Sekali lagi, NULL nilai melewati pemeriksaan.
Untuk mengesampingkan hal itu, kolom harus didefinisikan NOT NULL . Atau jadikan PRIMARY KEY karena kolom PK didefinisikan NOT NULL secara otomatis. Detail:
Juga, cukup gunakan boolean :
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
CHECK kendala bisa sesederhana itu untuk boolean kolom. Hanya TRUE diperbolehkan.
Anda mungkin ingin REVOKE
(atau bukan GRANT ) DELETE dan TRUNCATE hak istimewa dari public (dan semua peran lainnya) untuk mencegah satu baris dihapus. Seperti:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;