mhe*_*rzl 2 postgresql constraints
在Postgres,我有一个user_badge包含三列的表,显示如下.
# select * from user_badge;
id | user_id | badge_id | is_active |
----+---------+----------+------------
1 bob 00001 False
2 bob 00002 True
3 alice 00003 True
4 alice 00004 False
5 alice 00005 False
Run Code Online (Sandbox Code Playgroud)
在此表中,用户可以拥有多个徽章,但每个用户不得拥有多个活动徽章(即列为is_activeTrue的行).
另一种说法,就是查询
SELECT user_id FROM user_badge WHERE is_active;
Run Code Online (Sandbox Code Playgroud)
必须返回唯一的行.
这是我希望放在这张桌子上的一个限制因素.有没有办法指定Postgres保证它?在Postgres 关于约束的文档中,我看到如何可以在列和一组列上放置唯一性约束,但是没有看到唯一性约束涉及的示例WHERE.
使用部分或过滤的索引:
create unique index unq_user_badge_user_is_active
on user_badge(user) where is_active;
Run Code Online (Sandbox Code Playgroud)
有关部分索引的部分中的文档中对此进行了描述.
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |