想象一下你有一个简单的表:
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)
不是。