16.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.

16.6.1. Materialised Views (Rule based views)

Supposons que vous souhaitiez enregistrer chaque modification de phone_no dans votre table de personnes dans une table people_log. Donc, vous configurez 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 à ceci :

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.

16.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.

16.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.