【问题标题】:MySQL trigger/procedure execution delayMySQL 触发器/过程执行延迟
【发布时间】:2009-06-04 11:27:42
【问题描述】:

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

WHILE @condition = 0
  sleep for awhile

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

【问题讨论】:

    标签: mysql stored-procedures triggers


    【解决方案1】:

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

    SELECT SLEEP(<seconds>);
    

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

    【讨论】:

    • 如果你不想要结果集,你可以改用DO SLEEP(n)
    【解决方案2】:
    DO SLEEP(<seconds>);
    

    更好。没有理由只在触发器内运行SELECT 语句而不需要结果集。 如果你真的想要这样做,你需要这样做:

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

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

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

    【讨论】:

    • “您不能只在触发器中运行选择语句”请详细说明。这是我第一次听说这件事。如果您需要其他表中的数据来使触发器工作怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多