Vous n'êtes pas identifié(e).
Bonjour à tous,
Je viens de commencer avec Postgresql, j'ai utilisé plusieurs autres bases de données et je voudrai savoir s'il est possible après un "UPDATE/INSERT/DELETE" de connaitre le nombre d'enregistrements affectés.
Cette instruction existe dans d'autre gestionnaires de BD.
Merci pour votre assistance.
Hors ligne
La base de données renvoie cette information. C'est ainsi que les outils comme pgadmin, psql, etc peuvent l'afficher.
Guillaume.
Hors ligne
Bonjour à tous,
Je viens de commencer avec Postgresql, j'ai utilisé plusieurs autres bases de données et je voudrai savoir s'il est possible après un "UPDATE/INSERT/DELETE" de connaitre le nombre d'enregistrements affectés.
Cette instruction existe dans d'autre gestionnaires de BD.
Merci pour votre assistance.
En Pl/PgSQL :
Hors ligne
Bonjour,
J'ai lu ceci https://www.postgresql.org/docs/13/plpg … IAGNOSTICS j'aimerai avoir un bout de code en utilisant la commande UPDATE....FOUND.....//MERCI
Hors ligne
Il y a un exemple d'utilisation indiqué à https://www.postgresql.org/docs/13/plpg … IAGNOSTICS. Quel problème rencontrez-vous ?
Julien.
https://rjuju.github.io/
Hors ligne
Bjr regarder ce bout de code:
j'ai une creer une fonction compte() qui doit en fait me renvoyer le nombre d'enregistrement affecté par une instruction UPDATE/INSERT. Le resultat obtenu dépend de l'endroit ou est placé le UPDATE/INSERT
DECLARE
nbre integer;
BEGIN
insert into ffamille(codfam,codsfam,desigfamss)values('17','17','AROMES');
GET DIAGNOSTICS nbre = ROW_COUNT;
RAISE NOTICE E'--- Call nbre ---\n%', nbre;
RETURN nbre;
END;
Lorsque l'instruction INSERT/UPDATE est à l’intérieur de la fonction comme ci-haut le résultat renvoyé est 1 et c'est correct.
Par contre si je fait plutôt ceci:
DECLARE
stack integer;
BEGIN
GET DIAGNOSTICS stack = ROW_COUNT;
RAISE NOTICE E'--- Call Stack ---\n%', stack;
RETURN stack;
END;
ensuite j’exécute les deux requêtes suivantes:
insert into ffamille(codfam,codsfam,desigfamss)values('17','17','AROMES');
select compte();
le résultat renvoyé est 0. Ce qui n'est pas bon.
Ou se trouve l'erreur s'il vous plait!
Hors ligne
Vous ne pouvez pas utiliser GET DIAGNOSTICS de cette façon, l'instruction n'est valide que durant l'exécution d'une procédure stockée.
Comme Guillaume l'a déjà indiqué, pour une exécution normale postgres renvoie déjà l'information, et votre client a accès à l'information. Par exemple avec psql:
=# insert into t1 values (1), (2);
INSERT 0 2
=# \echo :ROW_COUNT
2
Le dernier "2" dans "INSERT 0 2" donne le nombre d'enregistrements affectés, qui est également disponible dans la variable :ROW_COUNT. Vous devez donc consulter la documentation de votre outil / framework pour savoir comment récupérer l'information.
Julien.
https://rjuju.github.io/
Hors ligne