我想写一个存储过程,针对于表A正在进行的操作(insert,update,delete)创建不同的触发器。请问一下,有没有什么系统变量能让我获得,我到底是在向表里插入,还是别的?
例如oracle代码是:
SET @V_SQL := CONCAT('create  trigger TRIG_FM_' , V_TABLE_P , ' 
                after insert OR update OR delete on ' , V_TABLE_P , ' 
                for each row
           DECLARE  V_TABLEname varchar(255);
           V_TABLEname := CONCAT(''' , V_TABLE_P , '_MODLOG'');
                IF INSERTING THEN
                  call addorupdate(V_TABLEname, NEW.id, NEW.dbid, 0);
                ELSIF UPDATING THEN
                   ...
MySQL中有没有类似的语句,可是实现 IF INSERTING THEN这种功能?

解决方案 »

  1.   

    MYSQL中不支持混合的触发器,也就是说哪怕代码完全相同,你也必须为INSERT BEFORE, INSERT AFTER, UPDATE BEFORE 等单独写它们的触发器。 这样也就不存在你所需要的这个在触发器代码中来判断 事件 的必要了。 所以MYSQL也没有提供这个功能。
      

  2.   

    哦,刚才看了下,那是oracle中的混合类型触发器。看来MySQL中不行。那我就分开写吧。