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

各ステートメントのトリガーの例

    OLD およびNEW nullであるか、ステートメントレベルのトリガーで定義されていません。 ドキュメントごと:

    大胆な強調鉱山。

    Postgres 10までは、これはわずかに異なりますが、ほとんど同じ効果があります:

    これらのレコード変数はまだステートメントレベルのトリガーには使用できませんが、新機能は次のとおりです。

    Postgres10以降の遷移表

    Postgres10では遷移表が導入されました。これらは、影響を受ける行のセット全体へのアクセスを許可します。 マニュアル:

    コード例については、マニュアルへのリンクをたどってください。

    遷移表のないステートメントレベルのトリガーの例

    遷移表が登場する前は、それらはさらに一般的ではありませんでした。便利な例は、通知 を送信することです。 特定のDMLコマンドの後。
    これが私が使用するものの基本バージョンです:

    -- Generic trigger function, can be used for multiple triggers:
    CREATE OR REPLACE FUNCTION trg_notify_after()
      RETURNS trigger
      LANGUAGE plpgsql AS
    $func$
    BEGIN
       PERFORM pg_notify(TG_TABLE_NAME, TG_OP);
       RETURN NULL;
    END
    $func$;
    
    -- Trigger
    CREATE TRIGGER notify_after
    AFTER INSERT OR UPDATE OR DELETE ON my_tbl
    FOR EACH STATEMENT
    EXECUTE PROCEDURE trg_notify_after();

    Postgres 11以降の場合は、同等の、混乱の少ない構文を使用します。

    ...
    EXECUTE FUNCTION trg_notify_after();
    

    参照:




    1. Codeigniterをグループ化し、多次元配列を作成します

    2. MySQLは既存のテーブル列を配置します

    3. 例によるフラスコ– Postgres、SQLAlchemy、およびAlembicのセットアップ

    4. PostgreSQLの入力終了時の構文エラー