* トリガプロシージャの作成 [#zd1cb73c]
** ファンクション作成 [#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に記録される。
** 確認 [#wb2b0960]
SELECT * FROM t1;
val
-----
(0 行)
INSERT INTO t1 VALUES ( 100 );
SELECT * FROM t2;
val | ctime
-----+----------------------------
100 | 2011-12-31 13:11:48.050969
(1 行)
** 参考 [#vec7a6f1]
http://www.postgresql.jp/document/9.1/html/plpgsql.html