15.6. Lesson: ルール¶
ルールは "クエリ木" に書き換えることができます。一つの一般的な使用法は、更新可能なビューなど、ビューを実装することです。 Wikipediaより
このレッスンの目標: データベースの新しいルールを作成する方法を学習する.
15.6.1. Creating a logging rule¶
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 を使用する, 空間データベースを紹介します.