小编And*_*iuk的帖子

创建 PostgreSQL 约束以防止唯一组合行

想象一下你有一个简单的表:

name | is_active
----------------
A    | 0
A    | 0
B    | 0
C    | 1
...  | ...
Run Code Online (Sandbox Code Playgroud)

我需要创建一个特殊的唯一约束,该约束在以下情况下失败:相同is_active值不能共存不同的name值。

允许条件示例:

注意:简单的多列唯一索引不允许这样的组合。

A    | 0
A    | 0
B    | 0
Run Code Online (Sandbox Code Playgroud)

允许条件示例:

A    | 0
B    | 1
Run Code Online (Sandbox Code Playgroud)

失败条件示例:

A    | 0
A    | 1
-- should be prevented, because `A 0` exists
-- same name, but different `is_active`
Run Code Online (Sandbox Code Playgroud)

理想情况下,我需要唯一约束或唯一部分索引。触发器对我来说更成问题。

双重A,0允许,但(A,0) (A,1)不是。

postgresql exclusion-constraint

11
推荐指数
1
解决办法
2756
查看次数

标签 统计

exclusion-constraint ×1

postgresql ×1