Почему не осуществляет проверку в процедуре?

CREATE DEFINER=`root`@`localhost` PROCEDURE `add_new_teacher_with_check`(id int,f_n varchar(45),s_n varchar(45),sur varchar(45),em varchar(45),post varchar(45))
BEGIN
declare is_digit tinyint(1) default true;
set is_digit=f_n not regexp '[0-9]'
and s_n not regexp '[0-9]'
and sur not regexp '[0-9]'
and em regexp '.ru$'
Insert into teacher(idteacher,first_name,second_name,surname,e_mail,work_place) value (id,f_n,s_n,sur,em,post); 
END

Хочу в таблицу teacher добавить нового учителя и проверить его на то, что у него введены буквы и в e_mail введен .ru . А он их просто добавляет постоянно даже не проверяя...


Ответы (1 шт):

Автор решения: Олег

Попробуйте так:

CREATE DEFINER=`root`@`localhost` PROCEDURE `add_new_teacher_with_check`(id int, f_n varchar(45),s_n varchar(45), sur varchar (45), em varchar(45) ,post varchar(45))
BEGIN
IF
(select em regexp '.ru$')and
(select em regexp '@')and
(select f_n regexp '[а-яА-Я]')and
(select s_n regexp '[а-яА-Я]')and
(select sur regexp '[а-яА-Я]')then
insert into teacher(idteacher, first_name, second_name, surname,e_mail,work_place)values(id,f_n,s_n,sur,em,post);
END IF;
END
→ Ссылка