RowCount avec PostgreSql

RowCount

PostgreSql met à notre disposition les variables de diagnostic qui permettent de savoir facilement combien de lignes ont été impactées par un update, un select ou toute autre requête SQL.

Cette technique est très pratique simplifier par exemple des logiques algorithmiques du type :

  • Si cette donnée existe on l'update
  • Si elle n'existe pas on l'ajoute

Dans l'exemple ci dessous nous allons utiliser cette logique sur une table facture paiement (si l'update n'impacte aucune ligne ... on en déduit que la table ne contient pas nos données et donc on peut les ajouter). Le code ci dessous fonctionne dans une procédure stockée :

montant_utilise = 450;

----- on tente d'updater la table 
UPDATE facturepaiement 
SET montant_ventile = montant_utilise 
WHERE id_facture = recordset.id 
AND id_paiement = rspaiements.id_paiement; 

-- on récupère le nombres de lignes impactées par l'update 
GET DIAGNOSTICS nbLignes = ROW_COUNT; 

-- Si cuaune ligne impactée ... on peut ajouter 
IF (nbLignes=0) THEN 
    INSERT INTO facturepaiement (id_facture, id_paiement, montant_ventile) 
    VALUES(recordset.id,rspaiements.id_paiement, montant_utilise ); 
END IF;
Par Christophe HIRON
23 juillet 2019