我有大约5个mySql事件,每个事件在完成后15分钟自动运行。
他们都使用sum()投票来更新表格,从00:00开始。
有没有办法判断一个事件是否失败?如果失败,则其他事件无需运行。失败的意思是内部(sql狂野)或它根本没有执行。
我想到这样做的一种方法是让事件成功调用存储过程或函数,然后调用其他事件。这样的事情可能吗?
答案 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;