Если одно значение равно NULL, то оба значения равны NULL. - PullRequest
0 голосов
/ 23 мая 2018

РЕДАКТИРОВАНИЕ ДЛЯ ЯРКОСТИ

Первая часть Я хотел бы, чтобы данные автоматически изменялись в соответствии с правилом:

Для каждой зоны либо Area_one, либо Area_twoдолжен быть указан, либо ни один из них не указан, например: либо оба имеют значение NULL, либо ни одно из них не равно NULL - должно быть на уровне таблицы.

До сих пор я придумал:

constraint chk_Null check (Area_one is not null and Area_two is not null)

Но при этом скрипт просто запрещает любые вставленные данные, которые являются нулевыми.

Вторая часть Я хотел бы автоматически изменить данные в соответствии с правилом:

Для данного значения, когда Value_oneприсутствует, Value_two должно быть NULL (наоборот)

Я написал:

constraint Value_chk check((Value_one IS NULL and Value_two IS NOT NULL) 
 or (Value_one is NOT NULL and value_two IS NULL))

Но я не уверен, как закончить это, или если я в правеНаправление.

Спасибо всем заранее!

1 Ответ

0 голосов
/ 23 мая 2018

И ноль, или ни одного:

constraint chk_Null check (
    (Area_one is not null and Area_two is not null) OR
    (Area_one is null and Area_two is null)
    )

Чтобы изменить данные, вам придется сделать это в триггере, так как обычное ограничение проверки будет проверять данные (и может откатывать их), но не обновлять их,Ваш триггер должен быть при вставке и обновлении и учитывать случай, когда оба значения не равны нулю (какой из них вы обновите?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...