35.5. Règles et statut de commande
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.