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

15.6. Lesson: Règles

Les règles permettent à “l’arbre de requête” d’une requête entrante d’être réécrit. Une utilisation courante est l’implémentation de vues, y compris des vues pouvant être mises à jour. -Wikipedia

Objectif de cette leçon: Apprendre à intégrer de nouvelles règles pour la base de données.

15.6.1. Vues matérialisées (vues basées sur des règles)

Disons que vous voulez tracer tout changement de phone_no dans votre table people dans une table nommée people_log. Vous créez une nouvelle table:

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

Vous pouvez ensuite créer une règle qui trace tout changement de la colonne phone_no de la table people dans la table 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);

Pour vérifier le bon fonctionnement de la règle, modifions un numéro de téléphone:

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

Vérifiez que la table people a été correctement mise à jour:

select * from people where id=2;

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

Maintenant, grâce à la règle que nous avons créée, la table people_log ressemblera à:

select * from people_log;

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

Note

La valeur du champ time dépendra de la date et de l’heure courante.

15.6.2. In Conclusion

Les règles permettent d’ajouter ou de modifier automatiquement les données dans votre base de données pour refléter des changements survenus ailleurs.

15.6.3. What’s Next?

Le prochain module introduira les bases de données spatiales avec PostGIS, reprenant ainsi les concepts de bases de données et les appliquant aux données SIG.