我有一个触发器,里面的sql语句执行时间为0.2秒左右,触发事件是字段的更新,
这样单行执行是没什么问题,问题是执行多个就出现很慢的情况,我用的where  语句是  between 1 and 50
和in(1-50)语句,有没有方法让他在between和in语句执行完之后再触发

解决方案 »

  1.   

    begin if NEW.picture_status!=OLD.picture_status OR NEW.picture_painter!=OLD.picture_painter OR NEW.picture_reviewer!=OLD.picture_reviewer THEN delete from uPlatform.u_emp_pic_num where project_id=1;insert into uPlatform .u_emp_pic_num (project_id,employee_id,reviewnum,paintnum)  
    select 1,id,sum(paint_num) as paint_num,sum(review_num) as review_num from
    (select 1 , picture_reviewer as id, 0 as paint_num,count(picture_id) as review_num from u_picture where picture_status IN ('to review','reviewing') GROUP BY picture_reviewer
    UNION
    select 1, picture_painter as id, count(picture_id) as paint_num,0 as review_num  from u_picture where picture_status IN ('to paint','painting','to repaint','repainting') GROUP BY picture_painter) as test GROUP BY id;这个是触发器的代码
    update u_picture set picture_status='painting' where picture_id BETWEEN  5000 and 5050这个是update的代码    运行时间要6秒
      

  2.   

    before 类型的触发器CREATE TRIGGER testref BEFORE
      

  3.   

    没有办法,触发器肯定是在每个记录更新时执行,无法在所有记录UPDATE后再执行。
      

  4.   

    建议不用TRIGGER,插入后再用SQL语句处理