Importante

Translation is a community effort you can join. This page is currently translated at 80.00%.

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. Criando uma regra de log

Digamos que você queira registrar todas as alterações de phone_no na tabela de pessoas em uma tabela people_log. Então você configura uma nova tabela:

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

No próximo passo, crie uma regra que registre todas as alterações de no_telefone na tabela pessoas dentro da tabela 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 a tabela people foi atualizada 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 vai ficar assim:

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.