2014-10-26 6 views
1

Мне нравится уметь вводить следующие значения в таблицу: 0,0; 0,1; 1,0 Но я хочу, чтобы отключить следующее значение: 1,1Mutiple fields in check statement

Я сделал следующий запрос:

CREATE TABLE mytab (a CHAR(1), b CHAR(1), CHECK(a != 1 AND b != 1));

Я могу войти 0,0, но я не могу войти 1,0. Как переписать этот логический оператор, чтобы он соответствовал моим требованиям?

ответ

3

Проверочное ограничение должно быть:

check (not (a = 1 and b = 1)) 

или что то же самое:

check (a <> 1 or b <> 1) 

(На самом деле, это не совсем эквивалент в присутствии NULL значений Во-вторых, вероятно, хотите вы хотите, если. вы допускаете значения NULL.)

+0

Perfect. Можете ли вы объяснить, почему моя первоначальная проверка не удалась? – jipje44

+0

@ jipje44. , , Он не реализует правильную логику. Он проверяет, что * оба значения * отличаются от «1», а не только одним из них. –

1

Использование OR вместо AND:

CHECK(a != 1 OR b != 1))