Важно
Перевод - это работа сообщества : ссылка:Вы можете присоединиться. Эта страница в настоящее время переводится |прогресс перевода|.
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, который использует эти концепции баз данных и применяет их к данным ГИС.