ORACLE:如何将UNIQUE Constraint与其他列相结合?
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));
我试图通过添加与另一列相结合的唯一约束来解决以下问题。
我的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));