Postgresql对一组值的排除约束
假设我有一个包含两列的表: |身份|身份| 状态可以采用3个值:已预订、已开始、已完成 我需要满足以下要求的约束: 对于整组行,只有一条记录可以处于未完成状态:已预订或已启动 我相信我需要一个排除约束,但我不知道可以指定什么运算符: 添加约束\u x排除状态是否有? 其中状态为“已完成”Postgresql对一组值的排除约束,postgresql,Postgresql,假设我有一个包含两列的表: |身份|身份| 状态可以采用3个值:已预订、已开始、已完成 我需要满足以下要求的约束: 对于整组行,只有一条记录可以处于未完成状态:已预订或已启动 我相信我需要一个排除约束,但我不知道可以指定什么运算符: 添加约束\u x排除状态是否有? 其中状态为“已完成” 这就是我想到的解决方案: add constraint constraint_x exclude ((1) with =) where ((status) <> 'Completed') add
这就是我想到的解决方案:
add constraint constraint_x exclude ((1) with =) where ((status) <> 'Completed')
add constraint constraint_x exclude ((1) with =) where ((status) <> 'Completed')
这是一个好的解决方案吗?这就是我想到的解决方案:
add constraint constraint_x exclude ((1) with =) where ((status) <> 'Completed')
add constraint constraint_x exclude ((1) with =) where ((status) <> 'Completed')
你的解决方案是好的
我会用这样的部分唯一索引来解决这个问题:
CREATE UNIQUE INDEX ON table_name ((1)) WHERE status <> 'Completed';