У меня есть таблица с двумя связанными столбцами, обязательным логическим значением и необязательной датой. Может быть только дата, когда логическое значение - ЛОЖЬ. Итак, у меня есть эта структура:
CREATE TABLE FOO (
FOO_ID INT IDENTITY(1, 1) NOT NULL,
MY_DATE DATETIME,
MY_BOOLEAN BIT DEFAULT 0 NOT NULL,
CONSTRAINT FOO_PK PRIMARY KEY (FOO_ID)
);
И я написал это ограничение для сохранения целостности данных:
ALTER TABLE FOO
ADD CONSTRAINT FOO_CHK CHECK (
MY_BOOLEAN=0 OR MY_DATE IS NULL
);
Я, должно быть, упускаю что-то очевидное, но дело в том, что я не могу запустить этот запрос на обновление:
UPDATE FOO
SET
MY_BOOLEAN=1,
MY_DATE=NULL
WHERE FOO_ID=31416
Я получаю ошибку конфликта проверочных ограничений, и обновление завершается неудачно. Что я делаю не так?
UPDATE
С сожалением сообщаю, что неправильно набрал название столбца ... Извините, что потратил ваше время. Я хотел бы снять вопрос: _ (