Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2006, 15h10   #1
Membre expérimenté
 
Avatar de bassim
 
Homme
Ingénieur Réseaux
Inscription : février 2005
Messages : 647
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : février 2005
Messages : 647
Points : 568
Points : 568
Envoyer un message via MSN à bassim Envoyer un message via Yahoo à bassim
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
bassim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2006, 16h31   #2
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 757
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 49
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 757
Points : 6 777
Points : 6 777
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
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2006, 16h44   #3
Membre expérimenté
 
Avatar de bassim
 
Homme
Ingénieur Réseaux
Inscription : février 2005
Messages : 647
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : février 2005
Messages : 647
Points : 568
Points : 568
Envoyer un message via MSN à bassim Envoyer un message via Yahoo à bassim
heu ... c quoi une PS ??

Edit : effectivement , j'ai un Trigger After Delete

voici la requete :

Code :
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 ??
bassim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2006, 16h48   #4
Membre émérite
 
Avatar de Yurck
 
Homme
Ingénieur développement logiciels
Inscription : février 2005
Messages : 682
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 3
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
Points : 921
Points : 921
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 :
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 :
1
2
3
4
5
 
SELECT MAX(CHAMP)
  FROM TABLE
WHERE ....
   INTO :Variable;
a+
__________________
Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
Aymond d'Alost
Yurck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2006, 16h52   #5
Membre émérite
 
Avatar de Yurck
 
Homme
Ingénieur développement logiciels
Inscription : février 2005
Messages : 682
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 3
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
Points : 921
Points : 921
Modifie ton trigger comme suit :

Code :
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 :
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.
__________________
Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
Aymond d'Alost
Yurck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2006, 16h56   #6
Membre expérimenté
 
Avatar de bassim
 
Homme
Ingénieur Réseaux
Inscription : février 2005
Messages : 647
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : février 2005
Messages : 647
Points : 568
Points : 568
Envoyer un message via MSN à bassim Envoyer un message via Yahoo à bassim
merci énormément de ton aide , vraiment Developpez est un site génial
bassim est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h55.


 
 
 
 
Partenaires

Hébergement Web