15.6. Lesson: ルール

ルールは “query tree” に書き換えることができます. 一つの一般的な使用法は, 更新可能なビューを含めて実装することです. Wikipediaより

このレッスンの目標: データベースの新しいルールを作成する方法を学習する.

15.6.1. Materialised ビュー(ルールのベースビュー)

people テーブルにある phone_no の変更すべてを people_log テーブルにログとして記録したいとする. その場合には新しいテーブルを設定する

create table people_log (name text, time timestamp default NOW());

次のステップでは, people テーブル内の phone_no の変更すべてを people_log テーブルにログとして記録するルールを作成

create rule people_log as on update to people
  where NEW.phone_no <> OLD.phone_no
  do insert into people_log values (OLD.name);

ルールが正しく機能することを確認するには, 電話番号を変更してみましょう

update people set phone_no = '082 555 1234' where id = 2;

people テーブルが正しく更新されたことを確認してください

select * from people where id=2;

 id |    name    | house_no | street_id |   phone_no
----+------------+----------+-----------+--------------
  2 | Joe Bloggs |        3 |         2 | 082 555 1234
(1 row)

今, 作成したルールによって, people_log テーブルは次のようになります

select * from people_log;

    name    |            time
------------+----------------------------
 Joe Bloggs | 2014-01-11 14:15:11.953141
(1 row)

ノート

time フィールドの値は, 現在の日付と時刻に依存します.

15.6.2. In Conclusion

ルールを使用すると, データベースの他の部分の変更を反映するために, 自動的にデータベース内のでデータを追加または変更することができます.

15.6.3. What’s Next?

次のセクションは,これらのデータベースの概念を使い, GIS データに適用した PostGIS を使用する, 空間データベースを紹介します.