有没有一种合适的方法来延迟执行MySQL触发器?
WHILE @condition = 0
sleep for awhile
insert into some_table values(NEW.value1, NEW.value2);
有没有一种合适的方法来延迟执行MySQL触发器?
WHILE @condition = 0
sleep for awhile
insert into some_table values(NEW.value1, NEW.value2);
自从MySQL 5.0.12版本起,你可以这样做:
SELECT SLEEP(<seconds>);
seconds参数可以包含小数,例如0.5秒。
DO SLEEP(<seconds>);
更好的做法是在不需要结果集的情况下,避免仅在触发器内运行 SELECT
语句。
如果您真的想这样做,需要像这样操作:
SET @nothing = (SELECT SLEEP(<seconds>));
但我建议使用DO
。不要忘记,默认情况下,触发器只是一个单语句。如果您的触发器中有多个语句,则需要使用BEGIN
/END
:
BEGIN
DO SLEEP(<seconds>);
UPDATE ...;
END
DO SLEEP(n)
来替代。 - Ross Smith II