Важно

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

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

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

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

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

Допустим, вы хотите регистрировать каждое изменение телефонного номера в таблице people в таблице people_log. Поэтому вы создаете новую таблицу:

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

На следующем этапе создайте правило, которое будет регистрировать каждое изменение номера телефона в таблице people в таблице 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. В заключение

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

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

Следующий модуль познакомит вас с пространственными базами данных с помощью PostGIS, который использует эти концепции баз данных и применяет их к данным ГИС.