MySQL触发器/程序执行延迟

时间:2009-06-04 11:27:42

标签: mysql stored-procedures triggers

有没有一种可靠的方法来延迟执行mysql触发器?

WHILE @condition = 0
  sleep for awhile

insert into some_table values(NEW.value1, NEW.value2);

2 个答案:

答案 0 :(得分:15)

从MySQL 5.0.12开始,你可以这样做:

SELECT SLEEP(<seconds>);

秒参数可以在几分之一秒内完成,例如.5。

答案 1 :(得分:5)

DO SLEEP(<seconds>);

更好。您不能只在触发器内运行SELECT语句。 如果您真的想要这样做,您需要像这里一样:

SET @nothing = (SELECT SLEEP(<seconds>));

但我建议使用DO。并且不要忘记每个默认情况下触发器只是一个语句。如果您的触发器中有超过1条语句,则需要使用BEGIN / END

BEGIN
    DO SLEEP(<seconds>);
    UPDATE ...;
END