2017-02-22 8 views
0

Я создаю условие проверки для поля в моей базе данных. В таблице, называемой учеником, у меня есть поле для «Пол». Это поле должно принимать одно из двух значений: «M» или «F». Я создал триггер так:Sql Состояние проверки триггера не работает

DELIMITER $$ 
CREATE TRIGGER `test_before_insert` BEFORE INSERT ON `student` 
FOR EACH ROW 
BEGIN 
    IF NEW.Gender<>'M' OR NEW.Gender<>'F' THEN 
     SIGNAL SQLSTATE '12345' 
      SET MESSAGE_TEXT = 'should be M or F'; 
    END IF; 
END$$ 
DELIMITER ; 

Триггер создается, но поле «гендер» не будет принимать любые значения, в том числе M или F.

ответ

0

Ваше состояние является неправильным. Это всегда так. использовать

IF NEW.Gender not in ('M', 'F') THEN 

или использовать

IF NEW.Gender<>'M' AND NEW.Gender<>'F' THEN 
+0

спасибо, он работает сейчас. Почему не работает <> в моем случае? –

+1

Поскольку у вас есть 2 условия в вашем 'if', а один из них - true или другой –

+0

Вы также можете использовать' and' вместо 'or' в вашем запросе –

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