hoặc - tạo chỉ mục và không giả định rằng các giá trị là duy nhất
Nó là an toàn khi giả định rằng các giá trị là 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.
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ử