PostgreSQL トリガーで外部プログラムを実行する方法


以前投稿した

PostgreSQL SQLで外部プログラムを実行する方法


の続きです。

データベースの変更は出来るが、プログラムは変更出来ないシステムとの連携で
あるテーブルのあるカラムが変更された場合に実行したい処理があるがどうしようかとなった際、トリガーを利用することにしました。

以前記事にしたCOPYコマンドで外部プログラムを利用するPROGRAMパラメータを利用します。

まずCOPY先テーブルとして適当なテーブルを用意します。

更新されるテーブルを用意します。

update_tableが更新された場合に動作させるプロシジャーを作ります。
pgsqlディレクトリのファイル一覧をテキストファイルに出力するようにします。

シングルクォートのエスケープで見にくいですね。

上記をupdate_tableが更新されたら動作するようにトリガーを作成します。

実際動かしてみます。

この時点ではテキストファイルは作成されません。

更新したのでホームディレクトリに下記名称のテキストファイルが作成されました。
hoge_oldval_1_newval_2.txt

ロールバックしてもプログラムの実行を取り消すことは出来ないのでそこは注意が必要です。