1

それぞれが完了してから 15 分後に自動実行される約 5 つの mySql イベントがあります。

それらはすべて、00:00 から始めて、投票の sum() でテーブルを更新します。

イベントが失敗したかどうかを確認する方法はありますか? 失敗した場合、他のイベントを実行する必要はありません。失敗とは、内部的に (SQL が暴走した)、またはまったく実行されなかったことを意味します。

私が考えた 1 つの方法は、イベントが成功したときにストアド プロシージャまたは関数を呼び出し、それが他のものを呼び出すようにすることでした。このようなことは可能ですか?

4

2 に答える 2

2

イベントに関する情報を格納できるテーブルを作成します。次に、コードの末尾にある各イベントに INSERT ステートメントを追加します。テーブルには、イベントでチェックする必要がある情報を格納する必要があります。

于 2013-05-20T06:11:07.530 に答える
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;
于 2013-05-20T06:25:09.513 に答える