【问题标题】:how to operate a dynamice table in trigger with mysql如何使用mysql在触发器中操作动态表
【发布时间】:2021-02-09 13:56:21
【问题描述】:

我需要编写一个触发器来更新另一个表中的记录。表名是动态的。

我创建的触发器如下所示:

BEGIN
   if new.status = 1 then 
       UPDATE NEW.tablename SET f1 = NULL WHERE id_ = old.pid;
   END if;
END

但是更新sql无法运行

有人可以帮我处理一下这里的 SQL 吗?

【问题讨论】:

    标签: mysql dynamic triggers


    【解决方案1】:

    您不能将列值用作表名。只有动态 SQL 可以 - 但在触发器中是不允许的。

    执行任务的唯一可见方式是

    BEGIN
       if new.status = 1 then 
           CASE NEW.tablename WHEN 'table1'
                              THEN UPDATE table1 SET f1 = NULL WHERE id_ = old.pid;
                              WHEN 'table2'
                              THEN UPDATE table2 SET f1 = NULL WHERE id_ = old.pid;
                              ...
                              END CASE;
       END if;
    END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多