MySQL触发器/程序执行延迟

Rag*_*nar 7 mysql triggers stored-procedures

有没有一个像样的方法来延迟执行mysql触发器?

WHILE @condition = 0
  sleep for awhile

insert into some_table values(NEW.value1, NEW.value2);
Run Code Online (Sandbox Code Playgroud)

Jon*_*ell 15

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

SELECT SLEEP(<seconds>);
Run Code Online (Sandbox Code Playgroud)

秒参数可以在几分之一秒内,如.5.

  • 如果你不想要一个结果集,你可以改为`DO SLEEP(n)`. (3认同)

fnk*_*nkr 5

DO SLEEP(<seconds>);
Run Code Online (Sandbox Code Playgroud)

更好。没有理由只SELECT在触发器内运行语句而不需要结果集。如果您确实想这样做,则需要像下面这样:

SET @nothing = (SELECT SLEEP(<seconds>));
Run Code Online (Sandbox Code Playgroud)

但是我建议使用DO。并且不要忘记,触发器只是默认情况下的一条语句。如果触发器中包含1条以上的语句,则需要使用BEGIN/ END

BEGIN
    DO SLEEP(<seconds>);
    UPDATE ...;
END
Run Code Online (Sandbox Code Playgroud)