目次

  1. トリガプロシージャ
  2. トリガーの作成
  3. トリガーの削除
  4. トリガーの一覧

トリガプロシージャ

指定したテーブルでINSERTUPDATEが行われたときに,あるテーブルに処理を施す.

CREATE FUNCTION 関数名()
RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
-- 変数の宣言
BEGIN
-- トリガーを引く方の変数をNEW.idやNEW.nameなどとして、あるテーブルへのINSERTやUPDATEの要素にする
RETURN NEW;
END
$$;

トリガーの作成

指定のテーブルにINSERTが実行されるとトリガーが引かれるようにするには,

CREATE TRIGGER 関数名_trigger AFTER INSERT ON テーブル名 FOR EACH ROW EXECUTE FUNCTION 関数名();
  • トリガイベントとしてはINSERTの他,UPDATEDELETEがある.
    • INSERT OR UPDATEとも書ける.
    • UPDATE OF col1, col2の形で,col1col2の少なくとも1列が更新された場合に起動できる.
  • FOR EACH ROWは対象行ごとに起動するが,デフォルトのFOR EACH STATEMENTではSQL文につき1回起動.

トリガーの削除

DROP TRIGGER 関数名_trigger ON テーブル名;

トリガーの一覧

SELECT * FROM information_schema.triggers;