目次

  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;