假設有一個表AVATARS和其他列中有user_id
(用戶表的外鍵)和state
其中狀態可以是0到6之間的任何值。我想要創建一個約束,以便用戶可以只有2個化身,其中一個狀態= 0,另一個狀態!= 0。我想知道是否有可能實現一個唯一的索引?或者我將不得不添加一些布爾列?PostgreSQL對於一組特定值的唯一索引
1
A
回答
1
你可以使用一個唯一的索引用表達:
CREATE UNIQUE INDEX avatars_userid_state_0_idx ON avatars(user_id,(state<>0));
(或state = 0
,最終結果是一樣的)。
0
可以使用過濾唯一索引做到這一點。
對於具有狀態= 0的一個值:
create unique index unq_avatars_user_state0
on avatars(user_id, state)
where state = 0;
對於具有狀態<一個值> 0:
create unique index unq_avatars_user_state0
on avatars(user_id, state)
where state <> 0;
注意:這些不保證這樣的值的存在,只是有最多隻有一個。
相關問題
- 1. postgresql - pk與唯一索引
- 2. PostgreSQL唯一索引錯誤
- 3. 唯一索引在PostgreSQL的分區
- 4. 唯一索引與非唯一索引
- 5. JDBC - PostgreSQL - 批量插入+唯一索引
- 6. 元組對的唯一唯一值?
- 7. 重寫唯一索引值
- 8. 爲什麼我對唯一索引有非唯一條目? (PostgreSQL 9.0)
- 9. 數組索引中的值不對應於另一個數組的索引
- 10. 如何添加一個有條件的唯一索引PostgreSQL的
- 11. 排序的索引組的唯一ID
- 12. '唯一'的唯一密鑰或索引
- 13. 循環到數組並獲得唯一特定鍵值對
- 14. 上更新的唯一索引值
- 15. data.table中的索引唯一值
- 16. mongoDB:重複值的唯一索引
- 17. 獨特VS非唯一聚簇索引,以加快對非唯一場
- 18. SQL唯一索引
- 19. SQL:唯一索引
- 20. 唯一索引4
- 21. Pymongo:insert_many +唯一索引
- 22. oracle對所有者的唯一索引
- 23. PostgreSQL的:內對特定值
- 24. 僅針對特定其他列值的一列的索引
- 25. 唯一約束vs唯一索引
- 26. 唯一索引在INFORMATION_SCHEMA不是唯一
- 27. Oracle唯一約束和唯一索引
- 28. 唯一索引或唯一鍵?
- 29. 對MATLAB中的一組特定行使用邏輯索引
- 30. EF6中的唯一索引約定