Как создать расширенное условие проверки - PullRequest
0 голосов
/ 22 мая 2019

У меня есть таблица 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 ]

4 голосов
/ 22 мая 2019

Вы, вероятно, хотите 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 голос
/ 22 мая 2019

Проверочное ограничение должно быть:

(dimension=1 and dimensiontype1 is not null)
or (dimension=2 and dimensiontype1 is not null and dimensiontype2 is not null)
or (dimension=3 and dimensiontyp1 is not null and dimensiontype2 is not null and dimensionType 3 is not null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...