Возникли проблемы при проверке электронной почты на столе - PullRequest
0 голосов
/ 28 ноября 2018

Что я пытаюсь сделать, это проверить электронную почту определенного регистра по триггеру.Например, если клиент зарегистрирован в первый раз, он должен создать электронное письмо с именем и фамилией (пример: user.last@email.com) , однако, если уже есть регистр с таким именемследует создать электронное письмо таким же образом, указав имя и фамилию после customer_id (пример: user.last2@email.com) .

Код, который у меня есть, следующий:

delimiter $
create trigger before_customer_insert
before insert on customer
for each row
begin
 declare emailVal varchar(45);
 declare checkData int;
 declare checkData2 int;

 set checkData = (select count(first_name) from customer where first_name = new.first_name);
 set checkData2 = (select count(last_name) from customer where last_name = new.last_name);
 if((checkData = 1) and (checkData2 = 1)) then
    set new.email = (concat(new.first_name,'.', new.last_name, '@sakilacustomer.org'));
 else
    set new.email = (concat(new.first_name,'.', new.last_name, new.customer_id, '@sakilacustomer.oeg'));
 end if;

 if(new.kind_customer is null) then
    set new.kind_customer = '1';
 end if;

 set new.active = 1;
 end $

Проблема, с которой я сталкиваюсь, заключается в том, что, когда это первый регистр, он вставляет письмо, но, например, с 0"name.last0@email.com", и если я пытаюсь вставить с той же информацией, показывает тот же адрес электронной почты.Я пытался изменить логику в операторах if, но все равно показывал те же проблемы.

1 Ответ

0 голосов
/ 28 ноября 2018

Ваша логика обратная.У вас есть:

if((checkData = 1) and (checkData2 = 1)) then

Но вы хотите:

if((checkData = 0) and (checkData2 = 0)) then

Вы хотите использовать имя без идентификатора клиента, если в базе данных нет таких записей с этими именами.

Примечание. Я не уверен, что ваш поиск имен и фамилий отдельно - это то, что вам нужно.Разве вы не хотите проверить, найден ли весь адрес как есть?

Как написано, если кто-то по имени Джо Блоггс попытается присоединиться, он будет joe.bloggs1, если есть кто-то еще по имени Джов системе, даже если нет другого Джо Блоггса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...