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;