Trigger compilé sans erreur mais ne fonctionne pas
Fermé
waliddovi
Messages postés
2
Date d'inscription
mercredi 29 août 2018
Statut
Membre
Dernière intervention
29 août 2018
-
Modifié le 29 août 2018 à 15:10
waliddovi Messages postés 2 Date d'inscription mercredi 29 août 2018 Statut Membre Dernière intervention 29 août 2018 - 29 août 2018 à 15:58
waliddovi Messages postés 2 Date d'inscription mercredi 29 août 2018 Statut Membre Dernière intervention 29 août 2018 - 29 août 2018 à 15:58
A voir également:
- Trigger compilé sans erreur mais ne fonctionne pas
- Erreur 0x80070643 - Guide
- Erreur 10016 epson - Forum Imprimante
- Référence future non valide ou référence à un type non compilé ✓ - Forum Word
- Erreur c2002 western union ✓ - Forum Vos droits sur internet
- Erreur g030 - Forum Bbox Bouygues
1 réponse
jee pee
Messages postés
39649
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
26 avril 2024
9 238
Modifié le 29 août 2018 à 15:45
Modifié le 29 août 2018 à 15:45
Salut,
Ton code comporte il me semble plusieurs erreurs de logique.
1/ pour ton anomalie sur l'insert, tu as un trigger basé qui est before (avant) insert sur OP, donc l'enregistrement n'est pas encore enregistré dans la base, comment veux tu le retrouver par ton select ?
2/ plus globalement sur les 3 cas de maj d'OP, pourquoi faire un select dans la base pour retrouver la somme alors que tu as :OLD.somme et :NEW.somme
il suffit de faire :
3/ je n'ai pas compris sur l'update ton if sur la somme ??
Le 3ème update ci-dessus devrait suffire. Par contre, voir les contraintes fonctionnelles, il peut y avoir un test à faire si le idcompte de l'opération peut faire l'objet d'un changement. Il faudrait alors 2 update
Ton code comporte il me semble plusieurs erreurs de logique.
1/ pour ton anomalie sur l'insert, tu as un trigger basé qui est before (avant) insert sur OP, donc l'enregistrement n'est pas encore enregistré dans la base, comment veux tu le retrouver par ton select ?
2/ plus globalement sur les 3 cas de maj d'OP, pourquoi faire un select dans la base pour retrouver la somme alors que tu as :OLD.somme et :NEW.somme
il suffit de faire :
UPDATE cpt SET solde = (solde - :OLD.somme) ou UPDATE cpt SET solde = (solde + :NEW.somme) ou UPDATE cpt SET solde = (solde - :OLD.somme + :NEW.somme)
3/ je n'ai pas compris sur l'update ton if sur la somme ??
Le 3ème update ci-dessus devrait suffire. Par contre, voir les contraintes fonctionnelles, il peut y avoir un test à faire si le idcompte de l'opération peut faire l'objet d'un changement. Il faudrait alors 2 update
if :OLD.idcompte != :NEW.idcompte UPDATE cpt SET solde = (solde - :OLD.somme) sur :OLD.idcompte UPDATE cpt SET solde = (solde + :NEW.somme) sur :NEW.idcompte else UPDATE cpt SET solde = (solde - :OLD.somme + :NEW.somme)
29 août 2018 à 15:58