- 追加された行はこの色です。
- 削除された行はこの色です。
* ストアドファンクション・トリガーの作成 [#zd1cb73c]
* トリガプロシージャの作成 [#zd1cb73c]
** ファンクション作成言語の確認とインストール [#oee2e65d]
*** 確認 [#n41c706d]
select * from pg_language;
*** インストール [#pc86f10b]
シェルで。
createlang -h 127.0.0.1 -d mydb -U taro plpgsql
** ファンクション作成 [#r6288b1d]
DROP FUNCTION myfunc();
CREATE FUNCTION myfunc() RETURNS TRIGGER AS
'
DECLARE ts TIMESTAMP;
BEGIN
ts = ''now'';
INSERT INTO t2 VALUES (new.val, ts);
RETURN new;
END;
'
LANGUAGE 'plpgsql'
;
** トリガー作成 [#oe5cd297]
DROP TRIGGER mytrigger ON t1;
CREATE TRIGGER mytrigger
BEFORE INSERT OR UPDATE ON t1 FOR EACH ROW
EXECUTE PROCEDURE myfunc()
;
これでテーブルT1にトリガーが設定された。T1に1件インサートすると、その値とその時の日付がテーブルT2に記録される。