2

Oracle トリガーを MySQL に移植しようとしています。トリガーにステートメントがありEXCEPTION WHEN OTHERS、他のすべてに対して同等のステートメントを見つけましたが、これに対するステートメントが見つかりません。トリガーは次のようなものです。

IF (yada yada)
    THEN
        BEGIN
            SELECT a
            INTO generic_variable1
            FROM table
            WHERE condition;
            SET generic_variable2 = value1;
     EXCEPTION WHEN OTHERS --this part needs to be replaced by valid MySQL syntax
        SET generic_variable2 = value2;
  END;
END IF;

その部分をMySQLに変換するにはどうすればよいですか?

4

1 に答える 1

6

Oracle と比較して、MySQL のストアド プロシージャ/トリガー言語は非常に限られていることを理解する必要があります。MySQL への移植中、多くの Oracle ユーザーは、「MySQL が X を実行できないなんて信じられない!!!!」と何度も言います。

EXCEPTION WHEN OTHERS may に最も近いのは、DECLARE CONTINUE HANDLER です。

例 (未テスト):

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @generic_variable2 = 1;

ただし、例外をスローする可能性のあるコード ブロックの後ではなく、に宣言します。

完全なドキュメントについては、 http://dev.mysql.com/doc/refman/5.5/en/declare-handler.htmlを参照してください。

于 2013-02-14T19:58:32.160 に答える