Проблемы с ограничением SQL CHECK - PullRequest
3 голосов
/ 16 апреля 2010

Я использую SQL Server 2008, и у меня есть таблица с тремя столбцами: Length, StartTime и EndTime. Я хочу установить ограничение CHECK для этой таблицы, которое гласит:

if Length == NULL then
  StartTime <> NULL and EndTime <> NULL
else
  StartTime == NULL and EndTime == NULL

Я начал пробовать такие вещи:

Length == NULL AND StartTime <> NULL AND EndTime <> NULL

Очевидно, этого недостаточно, но даже это простое выражение не будет проверено. Я получаю ошибку:

"Ошибка при проверке CK_Test_Length_Or_Time '. Хотите изменить ограничение?"

Есть идеи, как это сделать?

Ответы [ 2 ]

4 голосов
/ 16 апреля 2010
CHECK ([Length] IS NULL AND [StartTime] IS NOT NULL AND [EndTime] IS NOT NULL
      OR [Length] IS NOT NULL AND [StartTime] IS NULL AND [EndTime] IS NULL))
3 голосов
/ 16 апреля 2010

В SQL Server нет оператора ==. При проверке на ноль вы должны использовать «is»

Пожалуйста, попробуйте это:

((Length is null AND starttime is not null AND endtime is not null) OR
(Length is not null AND starttime is null AND endtime is null))

НТН

...