2010-02-05

[PostgreSQL] ルールでログを作成

ショッピングシステムの在庫管理をするにあたり、
現在のシステムでは現在の在庫数だけで、在庫増減の履歴データがなかったので、
ルールを作成することで、ログをおとすことにしました。

最初はトリガを作る予定だったのですが、ルールの方が簡単っぽかったので、
今回はルールを採用しました。

create rule zaiko_insert_rule as on insert to zaiko do
insert into zaiko_log values(new.goods_id,new.color_text,new.size_text,new.zaiko,new.zaiko,"timestamp"('now'::text));

create rule zaiko_update_rule as on update to zaiko do
insert into zaiko_log values(new.goods_id,new.color_text,new.size_text,new.zaiko,old.zaiko,"timestamp"('now'::text));


zaikoテーブルに追加・更新があった場合に、新たに作成したzaiko_logというテーブルに、
データを追加していきます。

ちょっとよくわからなかったのが、insertとupdateを同時に1つのルールにできなかったこと。
トリガの場合はできると思うのですが、そこは今回調べ切れませんでした。

また、日時を取得するのに単純にnowを入れると、同じ日時が入ってしまう現象があったので、
“timestamp”(‘now’::text)と書くことで解決できました。

Comment:

Trackback URL: