如果这个字段的计算比较的费时,而该字段实时性要求不高,不妨不要每条记录执行插入之后都通过触发器来更新,封装一个存储过程,用于更新该字段为空的记录,使用JOB定时批量执行。

解决方案 »

  1.   

    错误不怎么明确,后来我看书,上面说,在insert的after处不能update自身
      

  2.   

    行级触发器(for each row)中不允许访问触发的表中的其他的行,但可以通过:NEW.或:OLD.来访问触发的行。
    既然"a2是根据a1通过某一费时的算法得到",那么在触发器中计算a2不太妥当,因为触发器没有执行完前,引起触发的语句也不会结束的。还是按libin_ftsafe(子陌红尘)所建议的那样,用JOB来实现,除非业务要求必须要在更新a1后立即更新a2。不过即使要同时更新a2,也最好不在触发器中实现,改为用存储过程来实现写入a1和a2。
      

  3.   

    insert-after的update,难道不能放到insert-before里将:new直接换调?
      

  4.   

    采用了: libin_ftsafe(子陌红尘) 的办法