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

Cách thêm chỉ mục duy nhất có điều kiện trên PostgreSQL

Tạo một UNIQUE chỉ mục nhiều cột trên (product_id, variant_id) :

CREATE UNIQUE INDEX line_items_prod_var_idx ON line_items (product_id, variant_id);

Tuy nhiên, điều này sẽ cho phép nhiều mục nhập (1, NULL) cho (product_id, variant_id) bởi vì NULL các giá trị không được coi là giống hệt nhau.
Để bù đắp điều đó, hãy tạo thêm một phần UNIQUE lập chỉ mục trên product_id :

CREATE UNIQUE INDEX line_items_prod_var_null_idx ON line_items (product_id)
WHERE variant_id IS NULL;

Bằng cách này, bạn có thể nhập (1,2) , (1,3)(1, NULL) , nhưng cả hai đều không có lần thứ hai. Đồng thời tăng tốc các truy vấn với các điều kiện trên một hoặc cả hai cột.

Câu trả lời gần đây, có liên quan trên dba.SE, gần như áp dụng trực tiếp cho trường hợp của bạn:

  • Ràng buộc duy nhất nhiều cột của PostgreSQL và các giá trị NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. gem install pg --with-pg-config hoạt động, gói không thành công

  2. Cột không tồn tại?

  3. PostgreSQL SHOW TABLES Tương đương (psql) 

  4. truy vấn sql động trong postgres

  5. Tạo trình kích hoạt để chèn bảng con trả về lỗi khó hiểu