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
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
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
heu ... c quoi une PS ??
Edit : effectivement , j'ai un Trigger After Delete
voici la requete :
mais comment je pourrais avoir la même requête sans cette erreur , pourtant commande.ref ne peut être qu'unique ??
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);
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT CHAMP FROM TABLE WHERE .... INTO :Variable;
Soit tu corrige ton where soit tu modifie ta requêtes de la façon suivante
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT MAX(CHAMP) FROM TABLE WHERE .... INTO :Variable;
Modifie ton trigger comme suit :
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 IN (SELECT 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.
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)
Ta jointure "FROM commande,vente" entraine certainement le fait d'obtenir plusieurs résultat.
merci énormément de ton aide , vraiment Developpez est un site génial
Partager