|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : janvier 2004 Messages : 2 ![]() |
Bonjour à tous,
Après avoir épluché les 19 pages de post sans résultat Alors voila mon problème : je veux créer une procédure stoquée dans Interbase qui insère des lignes dans une table (jusqu'ici tout va bien), mais la boucle d'insertion utilise les valeurs d'une deuxième procedure qui va lire dans la meme table. Ce qui fait que les lignes qui sont en train d'être insérées par la procedure 1 ne sont pas prises en comptes par la 2 (euh, je suis clair la ?). Donc en gros mon problème c'est de pouvoir faire un commit à l'interieur d'une procedure stoquée. je mets les codes des procedures a tout hasard ! Proc1 : Code :
Code :
Jerome. |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
On ne peux pas sous interbase faire un commit de transaction dans une PS.
Pourquoi ? Le principe est simple, c'est l'application cliente qui doit décider de l'annulation ou la validation de la transaction. Et c'est plus simple et naturel ainsi. Immaginons que vous fassiez 10 000 insert depuis votre application cliente, puis vous lanciez une PS qui effectue un traitement qui peut etre relancé unitairement. Si cette PS avait la possibilité de valider ou d'annuler la transaction ca serait un peu dangereux, et il ne servirait à rien de demander à l'utilisateur final s'il veux valider ou annuler les 10000 insert... Bref ca compliquerait les choses apres pour savoir si c'est la PS ou le client qui valide ou annule etc... C'est bien plus simple comme c'est. Dans une transaction je peux combiner tous les traitement que je veux et les annuler ou valider en bloque sans me poser la question si un des traitements que j'ai pu appelé a déjà annulé ou validé... Par contre dans un PS on peux lever une exception ce qui permet d'annuler le traitement en cours et surtout d'informer le client qu'il y a un probleme. Ce client décidera s'il doit annuler ou valider sa transaction. Bon je ne suis pas certain d'avoir été clair et je n'ai pas le temps de me relire. Pour en revenir à votre probleme, comment votre deuxième procédure peut elle prendre en compte un insert que vous faites après son appel ??? Ne serait ce pas là votre problème ? Car vos deux PS étant dans le même transaction (puisqu'une appelle l'autre...) les modifications faites par l'une sont visibles par les deux. Faites l'appel apres votre insert et celui ci sera pris en compte par votre PS appelée. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2004 Messages : 2 ![]() |
ok, merci Barbibulle pour les explications. Je retourne de ce pas dans mon code !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com