【问题标题】:if statements inside mysql triggermysql 中的 if 语句触发
【发布时间】:2020-09-12 13:18:13
【问题描述】:

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

【问题讨论】:

    标签: mysql sql if-statement sql-insert database-trigger


    【解决方案1】:

    我认为你想要的语法是:

    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(这永远不会正确)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-13
      • 2013-01-28
      • 1970-01-01
      • 2022-11-07
      • 2020-09-22
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多