ORACLE:如何将UNIQUE Con​​straint与其他列相结合?

ORACLE: How to combine UNIQUE Constraint with other column?

我试图通过添加与另一列相结合的唯一约束来解决以下问题。

我的table:

Value    Flag
1        Y
2        Y
3        Y
1        N
2        N
3        N

它们都不是主键。

我不能为给定标志设置重复值,即对于标志 'Y',我不能有重复值。标志 'N' 也是如此。

Value    Flag
1        Y
2        Y
3        Y
3        Y        <--- This should not be allowed

我正在尝试为此条件添加约束,如下所示。

  ALTER TABLE Table_name 
  ADD CONSTRAINT Value_constraint
  CHECK ((UPPER(Flag) = 'Y' AND UNIQUE(Value)) OR
         (UPPER(Flag) = 'N' AND UNIQUE(Value)));

但我收到错误消息

SQL Error: ORA-00936: missing expression 
00936. 00000 -  "missing expression"
*Cause:    
*Action:

有人可以帮忙吗?

如果不允许组合,则添加唯一约束或索引:

ALTER TABLE Table_name 
  ADD CONSTRAINT Value_constraint UNIQUE (Value, Flag);

如果您总是希望标志为大写,那么还要为该效果添加一个约束:

ALTER TABLE Table_name 
  ADD CONSTRAINT CHK_Flag_Upper CHECK (Flag = UPPER(Flag));