需求描述:( Mysql5.1 )
有个表A中含有触发器,来自动维护另一个表B的数据.
为了某个需求,我做了一个存储过程,来进行批量的insert和 update表A;
当我一执行这个存储过程时,系统就死掉了.因为表A有触发器.而触发器还挺复杂的.我想mysql有没有办法暂停触发器的执行.当我完成批量insert和update后,在存储过程中添加代码去维护表B;然后再重新启动触发器.
或者实在不行.在过程前面先drop掉触发器,等我完成操作后,在存储过程中重新创建触发器.
这两种方法哪种可行呢?又如何实现呢?
着急啊!送上100分.谢谢各位高手赐教.

解决方案 »

  1.   

    这种是肯定可以的。你可以直接 drop trigger trigger_name
      

  2.   

    这种是肯定可以的。你可以直接 drop trigger trigger_name
      

  3.   

    想mysql有没有办法暂停触发器的执行.
    没有
    或者实在不行.在过程前面先drop掉触发器,等我完成操作后,在存储过程中重新创建触发器.
    不能在SP中创建,
    用mysql -uroot -p123 <R:\TEMP\AA.TXT
    其中AA。TXT为TRIGGER代码
      

  4.   

    那两位的意思是:两个方法都不可行呀?
    mysql既不支持trigger的disable,也没法在存储过程中创建trigger.这可怎么办啊.好惨.
      

  5.   


    用mysql -uroot -p123 <R:\TEMP\AA.TXT 
    其中AA。TXT为TRIGGER代码
      

  6.   


    mysql -uroot -p123  <R:\TEMP\AA.TXT 能在存储过程中调用吗?好像不能.....
      

  7.   

    呵呵,已经说过,在SP中不能创建,
    mysql -uroot -p123  <R:\TEMP\AA.TXT
    是在系统的命令行下运行的
      

  8.   


    在SHELL的脚本中或者你的程序中来实现这个 drop / create trigger 的动作。
      

  9.   

    那看来没别的方法了,只能用php实现了.具体想法如下:
    1先锁表.
    2删除触发器
    3执行存储过程:这里不删除触发器了,只在最后实现触发器的部分功能.
    4添加触发器
    5解锁两位老大,还有遗漏吗?