例のために、テーブルを考えてみましょう
create table foo (
contents text NOT NULL,
is_active boolean NOT NULL DEFAULT false,
dt_active date
)
レコードを挿入します:
insert into foo (contents) values ('bar')
ここまでは順調ですね。後で、レコードを「アクティブ化」したいと思います。
update foo set is_active = true
is_active
に変更されfalse
たときにやりたいことtrue
は、dt_active
に設定されていnow()
ます。ボーナスポイントについては、をeにis_active
変更し、dt_activeをnullに設定すると便利ですが、それがなくても生活できます。true
fals
このハウスキーピングをデータベースにプッシュしたいのですが、クライアントコードがはるかにクリーンになります(多くのテーブル(およびテーブル内の列タプルでさえ)がこの手法の恩恵を受ける可能性があるため)。
「then」と「now」を比較するために、トリガーでデータベース内の現在のレコードを引き出す方法(私はplpgsqlを使用しています)に困惑しています。コード例またはスニペットへのポインタは大歓迎です。