如何创建高级检查条件

时间:2019-05-22 13:36:58

标签: oracle check-constraints

我有一个Oracle表,我想创建一个检查条件,如下所示:

ALTER TABLE MyTable
    ADD CONSTRAINT MyTable_CHK2 CHECK (
    case Dimension 
        When 1 then 
            nvl(dimensiontype1,-1)<>-1
        when 2 then 
            nvl(dimensiontype1,-1)<>-1 and nvl(dimensiontype2,-1)<>-1
        when 3 then 
            nvl(dimensiontype1,-1)<>-1 and nvl(dimensiontype2,-1)<>-1 and nvl(dimensiontype3,-1)<>-1
        else
            true
        end
    )
disable

查询不起作用。我遇到了错误:缺少关键字。

有人知道如何解决吗?

谢谢。

2 个答案:

答案 0 :(得分:4)

您可能想要一个AND / OR表达式

 ALTER TABLE MyTable
    ADD CONSTRAINT MyTable_CHK2 CHECK 
 (
    (  Dimension  =  1 and  nvl(dimensiontype1,-1)  <> - 1 ) OR
    (  Dimension  =  2 and  (nvl(dimensiontype1,-1) <> - 1 and nvl(dimensiontype2,-1)<> -1 ) ) OR
    (  Dimension  =  3 and  (nvl(dimensiontype1,-1) <>  -1 and nvl(dimensiontype2,-1)<>  -1 and nvl(dimensiontype3,-1) <> -1))
) disable  ;  

答案 1 :(得分:1)

检查约束应为:

this.app.client.electron.remote.app.getApplicationMenu()