15.6. Lesson: ルール

ルールは "クエリ木" に書き換えることができます。一つの一般的な使用法は、更新可能なビューなど、ビューを実装することです。 Wikipediaより

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

15.6.1. ログに記録するルールを作る

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 を使用する, 空間データベースを紹介します.