Can't update table 'a' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.很清楚,不能再更新A表的时候,在触发器继续更新

解决方案 »

  1.   

    有大神知道这个SQL哪里错了么,。
      

  2.   

    create trigger t_afterinsert_on_tab_abnorrecord
    after insert on a for each row
    begin
    update a set id=(select b.id from b where b.name=a.name);
    end;
    MYSQL的触发器中无法对本表自身进行操作,以防递归触发。
      

  3.   

    如果是同步,似乎应该是B表中有记录修改,增加的时候去更新A表,而不是A表有变化时去用B表的数据来更新A。
      

  4.   

    但是现在需求不是同步 是要能将A表的id通过B表的name给映射过来。。
      

  5.   

    现在是这样的,因为表A的id都是从表B中获取的,现在我能让表A在增加记录的同时自己去表B根据name找到id并更新。
      

  6.   


    错误信息 
    Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5 0.000 sec
      

  7.   

    "只要表A增加记录那就同步两个表"没看懂是不是说增加a表同时也增加到b表啊?
    那你的语句就应该为
    create trigger t_afterinsert_on_tab_abnorrecord
    after insert on a for each row
    begin
    insert into b(id,name) values(new.id,new.name)
    end;
      

  8.   

    可能理解你的意思了
    你看看这句可以不
    create trigger t_afterinsert_on_tab_abnorrecord
    after insert on a for each row
    begin
    update a set id=(select b.id from b where b.name=new.name);
    end;