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