|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : août 2007 Messages : 5 ![]() |
Bonjour,
Me voila fraichement débarqué sur ce forum pour déjà appeler au secours. En même temps je suis pas un killer SQL DB2 ... J'ai essayé de simplifier au maximum ma demande. J'ai la table suivante Code :
Un meme code article peut donc avoir plusieurs couleurs. Mon problème : Le code TVA doit etre le meme pour un meme code article. Sauf que mon appli ne me permet de ne modifier qu'une ligne à la fois. Je dois donc parcourir toutes les lignes du même article et lui imposer le même code TVA. Exemple : Code :
Pour le moment le trigger que j'ai créé effectue des boucles infinie ... Quelqu'un a t'il la solution miracle pour effectuer cette manipulation ??? ![]() Merci d'avance |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Sur quel OS travailles-tu et dans quel langage ?
Pourquoi ne pas faire un update SQL directement dans le programme ? Pourquoi vouloir un trigger pour fair ela mise à jour ? |
|
|
00
|
|
|
#3 |
![]() ![]() |
Tu y gagnerais en facilité en utilisant 2 tables en relation.
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 5 ![]() |
Il s'agit d'une appli ... multi systèmes !
Base de données sur aix Appli de traitement sur Serveur Windows 2003 Modif de données par appli ou par SQL Je ne vous détail pas tout, ça ne servirais à rien. Je connais les différentes solutions à mettre en oeuvre pour optimiser les traitements, dont l'update direct dans l'appli, mais pour le moment je souhaite juste effectuer ma manip à partir d'un trigger, surtout par manque de temps. De plus je ne peux en aucun cas modifier l'architecure et le schéma actuel des tables !!! En fait je cherche vraiment à comprendre la limite d'un trigger ... |
|
|
00
|
|
|
#5 |
![]() ![]() |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 5 ![]() |
Bonjour à tous !
et merci JAb pour ton analyse de mes boucles infinies ... et c'est précisement la solution que je cherche ... N'y a t'il pas moyen de faire la mise à jour de cette table 1 seule fois sans que cela engendre des boucles infinies ??? j'avais vu quelques part une option "no cascade" ... |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 56 ![]() |
bonjour,
Il y a bien une option "NO CASCADE BEFORE" mais elle détermine un trigger BEFORE qui n'autorise pas les update... Je proposerai plutot quelque chose du genre DROP TRIGGER XTOF.MAJTAV; CREATE TRIGGER XTOF.MAJTAV AFTER UPDATE OF ARTTVA ON XTOF.ARTICLE REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL BEGIN ATOMIC Declare nb INTEGER; SET nb = (select count(*) from XTOF.ARTICLE where artid=n.artid and arttva=n.arttva); IF nb = 1 THEN update article set arttva=n.arttva where artid=n.artid; END IF; END ; On teste si il y a plus d'une ligne, pour l'aticle mis à jour, qui contienne le nouveau code TVA. Si il n'y en a qu'une (celle mise à jour par le premier update), on fait la mise à jour de masse. Cette mise à jour de masse, redéclenche le trigger mais lui même, n'en déclenche pas. Ca reste à optimiser mais mon idée est là : définition de la condition d'arrêt de la récursivité : si elle est atteinte, on ne fait plus d'update. A tester également sur un grand nombre de lignes... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com