У меня есть таблица с двумя связанными столбцами, обязательная логическая и необязательная дата. Может быть только дата, когда логическое значение FALSE. Поэтому у меня есть эта структура:Нарушение ограничений при обновлении
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
Я с сожалением сообщаю, что я набранный имя столбца ... Извините за тратить свое время. Я хотел бы снять вопрос:. _ (
Ошибка должна указывать **, что ** ограничение не работает, говорит ли это, что причиной является 'FOO_CHK'? –
Инструкции ОБНОВЛЕНИЯ КОНТРОЛЯ КОНФЕРЕНЦИИ КОНФЕРЕНЦИИ КОНФИДЕНЦИАЛЬНОСТИ ПРОВЕРКИ« FOO_CHK ». ha aparecido en la base de datos «MY_DATABASE», tabla «dbo.FOO». –