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;