Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql对一组值的排除约束_Postgresql - Fatal编程技术网

Postgresql对一组值的排除约束

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

假设我有一个包含两列的表:

|身份|身份| 状态可以采用3个值:已预订、已开始、已完成

我需要满足以下要求的约束:

对于整组行,只有一条记录可以处于未完成状态:已预订或已启动

我相信我需要一个排除约束,但我不知道可以指定什么运算符:

添加约束\u x排除状态是否有? 其中状态为“已完成”
这就是我想到的解决方案:

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';