IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

SQL Firebird Discussion :

erreur multiple rows in singleton select


Sujet :

SQL Firebird

  1. #1
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut erreur multiple rows in singleton select
    bonsoir à tous ,

    j'exécute cette requête :

    delete From Vente where num=17

    et j'ai une erreur comme citée dans le titre ...

    num est la clé primaire de la table ;

    ça fait une heure que je bloque sur un problème futile ...

    merci

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    A priori je ne pense pas que ce soit ta requête Delete qui est directement en cause. Il n'y a pas de raison !

    Par contre je dirais que cela peut venir d'une PS par exemple. Cette erreur se produit si une PS renvoie plusieurs enregistrements alors qu'un seul est attendu.

    Examine tes triggers Before/AfterDelete et surveille de plus près ce qui est exécuté.

    @+ Claudius

  3. #3
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    heu ... c quoi une PS ??

    Edit : effectivement , j'ai un Trigger After Delete

    voici la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* Trigger text */
       update monture set monture.quantite = monture.quantite +1 where
       monture.ref=(select commande.ref from commande,vente where 
    // le probleme est la donc 
    commande.fact
       = old.num);
    mais comment je pourrais avoir la même requête sans cette erreur , pourtant commande.ref ne peut être qu'unique ??

  4. #4
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Procedure Stockée

    Comme le dit notre confrère Claudius il doit s'agir d'une requête dans un de tes triggers Before ou AfterDelete. Ou dans une PS appelée par un de ces triggers

    il s'agit d'une requête de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT CHAMP
      FROM TABLE
    WHERE ....
       INTO :Variable;
    Si ton where n'est pas suffisamment restrictif alors tu as ce type de message qui te signale qu'on ne peut pas mettre plusieurs éléments dans une seule variable.

    Soit tu corrige ton where soit tu modifie ta requêtes de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT MAX(CHAMP)
      FROM TABLE
    WHERE ....
       INTO :Variable;
    a+

  5. #5
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Modifie ton trigger comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       UPDATE monture SET monture.quantite = monture.quantite +1 WHERE
       monture.ref IN (SELECT commande.ref FROM commande,vente WHERE
    // le probleme est la donc 
    commande.fact
       = old.num)
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       UPDATE monture SET monture.quantite = monture.quantite +1 WHERE
       monture.ref = (SELECT MAX(commande.ref) FROM commande,vente WHERE
    // le probleme est la donc 
    commande.fact
       = old.num)
    tout dépend du résultat que tu souhaites obtenir.
    Ta jointure "FROM commande,vente" entraine certainement le fait d'obtenir plusieurs résultat.

  6. #6
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    merci énormément de ton aide , vraiment Developpez est un site génial

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

Discussions similaires

  1. Multiple rows in singleton select
    Par jakouz dans le forum Bases de données
    Réponses: 7
    Dernier message: 16/04/2011, 19h45
  2. multiple rows in singleton select.
    Par le_dilem dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2009, 14h02
  3. pb : multiple rows in singleton select
    Par sillycoder dans le forum SQL
    Réponses: 6
    Dernier message: 12/06/2005, 16h35
  4. Réponses: 3
    Dernier message: 25/01/2005, 12h31
  5. Mutiple row in singleton select ????? [Important, merci]
    Par SkyDev dans le forum Bases de données
    Réponses: 6
    Dernier message: 20/04/2004, 14h02

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