如何判断mySql事件是否成功?

时间:2013-05-20 06:06:47

标签: mysql sql

我有大约5个mySql事件,每个事件在完成后15分钟自动运行。

他们都使用sum()投票来更新表格,从00:00开始。

有没有办法判断一个事件是否失败?如果失败,则其他事件无需运行。失败的意思是内部(sql狂野)或它根本没有执行。

我想到这样做的一种方法是让事件成功调用存储过程或函数,然后调用其他事件。这样的事情可能吗?

2 个答案:

答案 0 :(得分:2)

创建一个表格,您可以在其中存储有关事件的信息。然后,在代码末尾的每个事件中添加一个INSERT语句。该表需要存储检查事件所需的信息。

答案 1 :(得分:1)

您可以尝试使用EXIT HANDLER

DROP EVENT IF EXISTS `myDB`.`myEvent`;

CREATE EVENT IF NOT EXISTS `myDB`.`myEvent`
ON SCHEDULE
    EVERY 15 MINUTE
COMMENT 'Some comment'
DO
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
    BEGIN
    -- 1. Flag something, that should be tested in chained events
    --    if they should be skipped. I.e.:

    --    INSERT INTO `myDB`.`EventTable` (`event`, `failed`, `when`)
    --    VALUES ('myEvent', TRUE, NOW());

    --    OR

    --    UPDATE
    --        `myDB`.`EventTable`
    --    SET
    --        `failed` = TRUE,
    --        `when`   = NOW()
    --    WHERE
    --        `event` = 'myEvent';

    -- 2. Quit.
    END;

-- Do something, that may produce SQLEXCEPTION or SQLWARNING...
END;