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

Làm thế nào để PostgreSQL thực thi ràng buộc DUY NHẤT / loại chỉ mục nào nó sử dụng?

hoặc - tạo chỉ mục và không giả định rằng các giá trị là duy nhất

an toàn khi giả định rằng các giá trị duy nhất, nếu bạn có một chỉ mục duy nhất được xác định. Đó là cách các ràng buộc duy nhất được triển khai (tại thời điểm hiện tại và có thể là trong tất cả các phiên bản trong tương lai).

Xác định một UNIQUE ràng buộc có hiệu quả giống nhau (gần như, xem bên dưới) khi tạo một chỉ mục duy nhất mà không chỉ định loại chỉ mục. Và, tôi trích dẫn sách hướng dẫn:

Các lựa chọn là btree, hash, gist và gin. Phương thức mặc định là btree.

Thêm một ràng buộc chỉ là cách chuẩn sẽ không bị phá vỡ trong các phiên bản tương lai mà nó có thể được thực hiện khác nhau. Đó là tất cả.

Và không, một ràng buộc duy nhất chỉ có thể được triển khai với btree cơ bản lập chỉ mục trong tất cả các phiên bản lên đến và bao gồm cả PostgreSQL v14. Tôi trích dẫn đoạn "ADD table_constraint_using_index" trong sách hướng dẫn tại đây:

Chỉ mục không được có cột biểu thức cũng như không được là chỉ mục một phần. Ngoài ra, nó phải là một chỉ mục b-tree với thứ tự sắp xếp mặc định.

### Các khác biệt khác

  • Các ràng buộc duy nhất có thể được hoãn lại . Điều đó là không thể đối với các chỉ mục duy nhất. Hãy xem SET CONSTRAINTS ra lệnh và nhấp vào các liên kết để biết thêm.
- Một ** khóa ngoại ** không thể tham chiếu đến các cột có * chỉ * một chỉ mục duy nhất. [Hướng dẫn sử dụng:] [4]

Khóa ngoại phải tham chiếu đến các cột là khóa chính hoặc tạo thành một ràng buộc duy nhất.

Phần cuối cùng có vẻ như đã lỗi thời hoặc một sự hiểu lầm từ getgo. Xem:

  • Giá trị NULL cho cột tham chiếu_constraints.unique_constraint_ * trong giản đồ thông tin

Có liên quan:

  • Chỉ mục duy nhất tốt hơn ràng buộc duy nhất khi tôi cần một chỉ mục với một lớp toán tử



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tự động tăng trên một phần khóa chính với Entity Framework Core

  2. Cách chọn bản ghi từ 24 giờ qua bằng PostgreSQL

  3. Cách so sánh hai lược đồ trong PostgreSQL

  4. Làm thế nào để xử lý một giá trị tùy chọn được trả về bởi một truy vấn bằng cách sử dụng thùng postgres?

  5. Các hàng trùng lặp trong một bảng khóa chính.