Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Récupérer le nombre de lignes supprimées d'un DELETE


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut Récupérer le nombre de lignes supprimées d'un DELETE
    Bonjour à tous

    Je suis actuellement avec une fonction POSTGRESQL faisant des DELETE en cascade et j'aimerai récupérer pour chaque DELETE le nombre de lignes supprimées dans une variable sans devoir faire un SELECT COUNT avant chaque DELETE.

    J'ai tenté le INTO seul sans succès.

    J'ai aussi tenté le RETURNING * INTO variable, mais j'ai l'erreur :
    "ERROR: query returned more than one row"
    Je présume donc qu'il ne retourne pas le nombre de lignes, mais les lignes elles-mêmes.

    Il faudrait quelque chose du genre RETURNING count(*) INTO variable, mais ce serait trop simple si ça fonctionnait ^^.

    Quelqu'un peut m'aider ?

    Merci

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    avril 2002
    Messages
    5 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : avril 2002
    Messages : 5 807
    Points : 23 039
    Points
    23 039
    Par défaut
    Bonjour,

    En encapsulant votre DELETE dans une CTE (= requête WITH), et en utilisant la clause RETURNING, puis en faisant un COUNT, ça doit fonctionner...
    La syntaxe ressemble à quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WITH dels AS (
        DELETE FROM ma_table
        WHERE condition
        RETURNING *
    )
    SELECT COUNT(*)
    FROM dels;
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut
    Merci ced !

    Ça fonctionne de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WITH delAudit AS (
    	delete from table where condition
    	RETURNING *
    )
    SELECT COUNT(*) into nbAudit
    FROM delAudit;
    Et dans nbAudit je récupère le nombre d'enregistrement supprimés.

    Voilà !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sunopsis v3] : récupérer le nombre de lignes mises à jour
    Par HarryCoco dans le forum Alimentation
    Réponses: 3
    Dernier message: 08/07/2007, 08h53
  2. Réponses: 2
    Dernier message: 20/03/2007, 13h39
  3. Récupérer le nombre de lignes
    Par popogendarme dans le forum PHP & MySQL
    Réponses: 4
    Dernier message: 31/01/2007, 15h20
  4. Réponses: 3
    Dernier message: 27/09/2006, 11h35
  5. [javascript/dom] Récupérer le nombre de lignes d'un tableau
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/02/2006, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo