PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để chỉ cho phép một hàng cho một bảng?

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 ) DELETETRUNCATE đặ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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lỗi MAC SSL ghi sai giữa Java và PortgreSQL

  2. Cần truy vấn sql để tìm các bài đăng có thứ tự nhận xét nhiều nhất theo số nhận xét / đếm DESC

  3. làm cách nào tôi có thể lấy tất cả id bắt đầu từ một id đã cho một cách đệ quy trong một bảng postgresql tham chiếu đến chính nó?

  4. Câu hỏi truy vấn con SQL, LỖI:tham chiếu không hợp lệ đến mục nhập mệnh đề FROM ...

  5. Cách tạo người dùng chỉ đọc trong PostgreSQL