sql >> データベース >  >> RDS >> Mysql

更新ステートメントの後にMySQLトリガーで古い値を取得する

    UPDATE TRIGGER OLDを使用できます 更新によって置き換えられている行データにアクセスするためのキーワード。 NEW キーワードを使用すると、成功した場合に古い行を置き換える受信行データにアクセスできます。

    UPDATEの例 トリガーは次のとおりです:

    CREATE TRIGGER upd_check AFTER UPDATE ON SomeTable
        FOR EACH ROW
        BEGIN
           IF (OLD.LastChangedBy <> NEW.LastChangedBy) THEN
             INSERT INTO AuditSomeTable(ID, LastChangedBy) 
             VALUES (OLD.ID, OLD.LastChangedBy);
           END IF;
        END;
    

    SQLFiddle ここ

    作成されたトリガーのタイプに応じて、OLD およびNEW 行が利用できない場合があります:

    トリガーを挿入

    • NEWへのアクセス 疑似行のみ。

    UPDATE TRIGGER

    • NEWへのアクセス およびOLD 疑似行

    トリガーの削除

    • OLDへのアクセスのみ 疑似行

    つまり、OLDはありません INSERTの行 トリガーし、NEWはありません DELETEの行 トリガー。

    OPの質問

    OPは実際のコードを提供しておらず、コメントで参照されているエラーメッセージ:

    OPが誤ってINSERT TRIGGERを作成したことを示します UPDATE TRIGGERではありません 質問で示されたように。 INSERT トリガーにはOLDがありません 疑似テーブル。



    1. プラグ可能なデータベースの名前を変更する

    2. パラメータを使用してmySqlにプロシージャを作成する

    3. java.sql.SQLException:使い果たされた結果セット

    4. LinuxでデフォルトのMySQL/MariaDBポートを変更する方法