2013-03-06 2 views
0

Я пытаюсь создать проверку ограничений с помощью мастера SQL Server Management Studio 2012, чтобы разрешить поле быть нулевым, только если кортеж не включен, но я получаю Error validating constraint.Проверить ошибку выражения Constraint

Выражение Я пытаюсь использовать это:

TransactionalMerchantId IS NOT NULL 
OR 
(TransactionalMerchantId IS NULL AND Enabled IS false) 

Моя таблица разработана как это:

Table Merchant

Может кто-то помочь мне понять, почему это происходит?

ответ

3

Try:

TransactionalMerchantId IS NOT NULL 
OR 
(TransactionalMerchantId IS NULL AND Enabled = 0) 
+0

Пригвожден! Забытый SQL Server не автоматически отображал 'false' как 0. Спасибо! – leobelones

+0

Это меня несколько раз поймало. Я предполагаю, что это так, что запросы с целыми типами не так легко ошибочно записываются (оценивая целочисленное значение как логическое, случайно), подобно многим языкам, сравнивающим равенство с ==, но присваивание с =. –

0

is предназначен для сравнения только с null. Попробуйте:

[Enabled] = false 
+0

частично прав, но, по сообщению @Jake Heidt, в SQL Server не понимает, ложь или правда, только 0 или 1. Но спасибо за понимание в любом случае! – leobelones

 Смежные вопросы

  • Нет связанных вопросов^_^