Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос про delimiter в triggerах MySQL

Умрбек Искандарович Мастер (1675), на голосовании 2 года назад
Хотел создать триггер для тех случаев, когда в БД что-то пишется, то дублируется в другую таблицу.
 delimiter | 
create trigger aft_ins after insert on personnel
for each row
begin
insert into register_personnel (id_personnel, name, surname)
values (NEW.personnel.id, NEW.personnel.name, NEW.personnel.surname);
end;
|
delimiter;
основная таблица personnel, а копируется в register_personnel.


информация о столбцах имеющихся:
Дополнен 2 года назад
delimiter |
create trigger aft_ins after insert on personnel
for each row
begin
insert into register_personnel (id_personnel, firstname, lastname)
values (NEW.personnel.id, NEW.personnel.firstname, NEW.personnel.lastname);
end;
|
delimiter;

name поменял на firstname, surname -> lastname
иначе смотрю IDE выделяет name как часть синтаксиса
Голосование за лучший ответ
Лайт Ягами Искусственный Интеллект (309781) 2 года назад
В конце между delimiter и точкой с запятой пробел пропустил. Он там нужен (точка с запятой в этой инструкции выступает не как разделитель, а как параметр)
Умрбек ИскандаровичМастер (1675) 2 года назад
вообще я заметил, что триггер создаётся без этого нижнего delimiter, но всё же спасибо за подсказку.
Позвольте наглеть и попросить ещё одну подсказку: код всё же не работает. Как надо писать чтобы данные копировались?
Умрбек ИскандаровичМастер (1675) 2 года назад
нет всё, решил.
Оказалось ничего не работала потому ,что я ранее подключал другой триггер, которого я забыл удалить
Умрбек ИскандаровичМастер (1675) 2 года назад
правильный ответ для следующих пользователей:
Тут 2 варианта:

#первый вариант
delimiter |
create trigger aft_ins1 after insert
on personnel for each row
begin
insert into register_personnel (id_personnel, firstname, lastname)
values(NEW.id, NEW.firstname, NEW.lastname);
end;
|

delimiter ;


#второй вариант
delimiter |
create trigger aft_ins after insert on personnel
for each row
begin
insert into register_personnel (id_personnel, firstname, lastname)
select NEW.id, NEW.firstname, NEW.lastname;
end;
|
delimiter ;
Похожие вопросы