创建检查约束Oracle

创建检查约束Oracle,oracle,constraints,Oracle,Constraints,我试图创建一个检查约束,该约束在两列之间强制执行一个规则,但出现以下错误: ORA-00920:无效的关系运算符 我看不出我的语句中哪个关系运算符是错的。需要帮忙吗 alter table "TRANSACTION" add constraint "CHECK_TRANSACTIONREFERENCE" check ("REFERENCE" case when TRANSACTION_MEAN=2 then (case when 'Reference' is no

我试图创建一个检查约束,该约束在两列之间强制执行一个规则,但出现以下错误:

ORA-00920:无效的关系运算符

我看不出我的语句中哪个关系运算符是错的。需要帮忙吗

alter table "TRANSACTION" add constraint "CHECK_TRANSACTIONREFERENCE" check 
    ("REFERENCE" case when TRANSACTION_MEAN=2 then 
          (case when 'Reference' is not null then 1 else 0 end) 
    else 
          1 
    end = 1)

看起来您想要执行的业务规则是

如果事务平均值等于
2

那么,为什么不编写代码呢

alter table "TRANSACTION" 
    add constraint "CHECK_TRANSACTIONREFERENCE" 
    check (
             ( TRANSACTION_MEAN = 2 and Reference is not null)
       or TRANSACTION_MEAN != 2)
/

看起来还可以,但我认为“Reference”应该替换为“Reference”。我用“Reference”进行了检查,但仍然是相同的错误。你想表达什么?什么是
参考
?是列名吗?第一部分
“REFERENCE”case…
的语法无效。不知道你想做什么。此外,“Reference”不为null时,
的大小写将始终计算为true,因为您正在检查字符串literal
“Reference”