Outdated version of the documentation. Find the latest one here.

15.6. Lesson: Regras

As regras permitem a “árvore de comando” de uma consulta de entrada para ser reescrito. Um uso comum é a implementação de pontos de vista, incluindo visão atualizável. - Wikipedia

O objetivo dessa lição: Aprender a criar novas regras para o banco de dados.

15.6.1. Visualizações Materializadas (Visualizações baseada em regra)

Digamos que você queira registrar cada mudança de phone_no em sua tabela de pessoas em a uma tabela people_log. Então você configurar uma nova tabela

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

No próximo passo, criar uma regra que registra todas as alterações de uma phone_no na tabela de pessoas na tabela de 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);

Para testar se a regra funciona, vamos modificar um número de telefone

update people set phone_no = '082 555 1234' where id = 2;

Verifique se pessoas tabela foi atualizado corretamente

select * from people where id=2;

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

Agora, graças à regra que criamos, a tabela people_log será parecido com isto

select * from people_log;

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

Nota

O valor do campo time vai depender da data e hora atual.

15.6.2. In Conclusion

As regras permitem que você automaticamente adicione ou altere dados em seu banco de dados para refletir mudanças em outras partes do banco de dados.

15.6.3. What’s Next?

O próximo módulo irá apresentá-lo ao banco de dados espacial com PostGIS, que leva esses conceitos de banco de dados e os aplica a dados GIS.