Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Chapitre 33. Système de règles | Avance rapide | Suivant |
Le serveur PostgreSQL renvoie une chaîne de statut de commande, comme INSERT 149592 1, pour chaque commande qu'il reçoit. C'est assez simple lorsqu'il n'y a pas de règles impliquées. Mais qu'arrive-t'il lorsque la requête est réécrite par des règles ?
Les règles affectent le statut de la commande de cette façon :
S'il n'y a pas de règle INSTEAD inconditionnelle pour la requête, alors la requête donnée originellement sera exécutée et son statut de commande sera renvoyé comme d'habitude. (Mais notez que s'il y avait des règles INSTEAD conditionnelles, la négation de leur qualifications sera ajouté à la requête initiale. Ceci pourrait réduire le nombre de lignes qu'il traite et, si c'est le cas, le statut rapporté en sera affecté.)
S'il y a des règles INSTEAD inconditionnelles pour la requête, alors la requête originale ne sera pas exécutée du tout. Dans ce cas, le serveur renverra le statut de la commande pour la dernière requête qui a été insérée par une règle INSTEAD (conditionnelle ou non) et est du même type de commande (INSERT, UPDATE ou DELETE) que la requête originale. Si aucune requête ne rencontrant ces pré-requis n'est ajoutée à une règle, alors le statut de commande renvoyé affiche le type de requête original et annule le compteur de ligne et le champ OID.
(Ce système a été établi pour PostgreSQL 7.3. Dans les versions précédentes, le statut de commande pouvait afficher des résultats différents lorsque les règles existaient.)
Le programmeur peut s'assurer que toute règle INSTEAD désirée est celle qui initialise le statut de commande dans le deuxième cas en lui donnant un nom de règle étant le dernier en ordre alphabétique parmi les règles actives pour qu'elle soit appliquée en dernier.
Précédent | Sommaire | Suivant |
Règles et droits | Niveau supérieur | Règles contre déclencheurs |