Важно

Перевод - это работа сообщества : ссылка:Вы можете присоединиться. Эта страница в настоящее время переводится |прогресс перевода|.

15.6. Урок: Правила

Правила позволяют переписать «дерево запросов» входящего запроса. Одно из распространенных применений - реализация представлений, включая обновляемые представления. - Википедия

Цель урока: Научиться создавать новые правила для базы данных.

15.6.1. Создание правила ведения журнала

Say you want to log every change of phone_no in your people table in to a people_log table. So you set up a new table:

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

In the next step, create a rule that logs every change of a phone_no in the people table into the people_log table:

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;

Check that the people table was updated correctly:

select * from people where id=2;

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

Now, thanks to the rule we created, the people_log table will look like this:

select * from people_log;

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

Примечание

The value of the time field will depend on the current date and time.

15.6.2. В заключение

Правила позволяют автоматически добавлять или изменять данные в базе данных, чтобы отразить изменения в других частях базы данных.

15.6.3. Что дальше?

The next module will introduce you to Spatial Database using PostgreSQL with PostGIS extension, which takes these database concepts and applies them to GIS data.