Một UNIQUE
ràng buộc cho phép nhiều hàng với NULL
giá trị, bởi vì hai NULL
các giá trị không bao giờ được coi là giống nhau.
Các cân nhắc tương tự áp dụng cho CHECK
hạn chế. Chúng cho phép biểu thức là TRUE
hoặc NULL
(chỉ không FALSE
). Một lần nữa, NULL
giá trị vượt qua kiểm tra.
Để loại trừ điều đó, cột phải được định nghĩa NOT NULL
. Hoặc đặt nó làm PRIMARY KEY
vì cột PK được xác định NOT NULL
tự động. Chi tiết:
Ngoài ra, chỉ cần sử dụng boolean
:
CREATE TABLE public.onerow (
onerow_id bool PRIMARY KEY DEFAULT TRUE
, data text
, CONSTRAINT onerow_uni CHECK (onerow_id)
);
CHECK
ràng buộc có thể đơn giản như vậy đối với boolean
cột. Chỉ TRUE
được cho phép.
Bạn có thể muốn REVOKE
(hoặc không GRANT
) DELETE
và TRUNCATE
đặc quyền từ public
(và tất cả các vai trò khác) để ngăn không cho hàng đơn lẻ bị xóa. Như:
REVOKE DELETE, TRUNCATE ON public.onerow FROM public;