Задержка выполнения триггера/процедуры MySQL

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

WHILE @condition = 0
  sleep for awhile

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

2 ответов


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

SELECT SLEEP(<seconds>);

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


DO SLEEP(<seconds>);

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

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

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

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