Sommaire

Le système de règles

Il existe dans PostgreSQL un système de réécriture de requêtes, appelé règles de réécriture, qui permet de modifier en profondeur l’interprétation des ordres SQL. Le comportement est assez proche de celui des déclencheurs, mais alors qu’un déclencheur permet des actions avant ou après une requête, une règle permet de détourner une action afin d’en effectuer une autre à la place.

Le synopsis de l’ordre de création d’une règle est le suivant :

CREATE [ OR REPLACE ] RULE nom AS ON evenement  
    TO table [ WHERE condition ]  
    DO [ ALSO | INSTEAD ] { NOTHING | commande |  
( commande ; commande ... ) } 

Les mots-clés OR REPLACE permettent de remplacer une règle existante donc avec le même nom.

L’événement doit être un des quatre ordres de manipulation des données (SELECT, UPDATE, INSERT et DELETE).

La condition permet de filtrer la réécriture, en fonction des valeurs de la ligne sélectionnée, avec le mot-clé OLD désignant la ligne.

Le mot-clé ALSO précise que la requête qui déclenche la réécriture est effectuée, alors que le mot-clé INSTEAD indique que cette requête ne sera pas exécutée.

Enfin, l’action à réaliser est indiquée, ou sinon le mot-clé NOTHING ...