mysql 内的 if 语句触发

if statements inside mysql trigger

所以我有两个表 practice 和 practice1,其中都有一个自动递增 id 和一个名称和姓氏列。 我做了一个插入后触发器,里面有一个 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 是数据库的名称。

我想你想要的语法是:

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 ;

要点:

  • 您需要使用伪table new来访问刚刚插入的行

  • 你的 if 语句的结构应该是 if ... then ... elseif ... end

  • 要对照 null 检查一个值,请使用 is null 而不是 = null(这永远不是真的)