MySQL триггер / задержка выполнения процедуры - PullRequest
7 голосов
/ 04 июня 2009

Есть ли достойный способ отложить выполнение триггера MySQL?

WHILE @condition = 0
  sleep for awhile

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

Ответы [ 2 ]

15 голосов
/ 06 июня 2009

Начиная с MySQL 5.0.12, вы можете сделать это:

SELECT SLEEP(<seconds>);

Параметр секунд может быть в долях секунды, например .5.

5 голосов
/ 30 января 2014
DO SLEEP(<seconds>);

лучше. Вы не можете просто запустить SELECT операторы внутри триггеров. Если вы действительно хотите сделать это, вам нужно сделать это следующим образом:

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

Но я рекомендую использовать DO. И не забывайте, что триггер - это всего лишь один оператор по умолчанию. Если в вашем триггере более 1 оператора, вам нужно использовать BEGIN / END:

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