операторы if внутри mysql триггера - PullRequest
0 голосов
/ 25 мая 2020

Итак, у меня есть две таблицы, практика и практика1, где у обеих есть идентификатор автоматического увеличения и столбцы имени и фамилии. Я сделал триггер после вставки, где у меня есть оператор if внутри, где я помещаю условие, если имя равно нулю, должна произойти одна вставка, а если фамилия равна нулю, то другая, но по какой-то причине она не сработала. Я делюсь сценарием, который пробовал.

CREATE DEFINER = CURRENT_USER TRIGGER `id_information`.`practice_after_INSERT1` AFTER INSERT ON `practice` FOR EACH ROW
BEGIN
if (`name`  = NULL) then
 insert into id_information.practice1(surname) values(new.surname);
 else
 (`surname` = NULL) then
  insert into id_information.practice1(name) values(new.name);
 end if;
END$$
delimiter ;

Пожалуйста, исправьте мою ошибку. id_information - это имя базы данных.

1 Ответ

0 голосов
/ 25 мая 2020

Я думаю, что вам нужен синтаксис:

delimiter $$

create definer = current_user trigger `id_information`.`practice_after_insert1` 
after insert on `practice` for each row
begin
    if new.name is null then
        insert into id_information.practice1(surname) values(new.surname);
    elseif new.surname is null then
        insert into id_information.practice1(name) values(new.name);
    end if;
end$$

delimiter ;

Ключевые моменты:

  • вам нужно использовать псевдотаблицу new для доступа к строке, которая был только что вставлен

  • структура вашего оператора if должна быть if ... then ... elseif ... end

  • , чтобы проверить значение на null, используйте is null вместо = null (что никогда не бывает)

...