Hãy tưởng tượng bạn có một bảng đơn giản:
name | is_active
----------------
A | 0
A | 0
B | 0
C | 1
... | ...
Tôi cần tạo một ràng buộc duy nhất đặc biệt không thành công trong tình huống sau: các is_active
giá trị khác nhau không thể cùng tồn tại cho cùng một name
giá trị.
Ví dụ về điều kiện được phép:
Lưu ý: chỉ mục duy nhất nhiều cột đơn giản sẽ không cho phép kết hợp như thế này.
A | 0
A | 0
B | 0
Ví dụ về điều kiện được phép:
A | 0
B | 1
Ví dụ về điều kiện thất bại:
A | 0
A | 1
-- should be prevented, because `A 0` exists
-- same name, but different `is_active`
Lý tưởng nhất, tôi cần ràng buộc duy nhất hoặc chỉ mục một phần duy nhất. Triggers là vấn đề hơn đối với tôi.
Nhân đôi A,0
cho phép, nhưng (A,0) (A,1)
không.
ERROR: data type boolean has no default operator class for access method "gist"