Transaction a plusieurs requetes [Résolu]

cs_deubal 198 Messages postés mercredi 26 novembre 2003Date d'inscription 26 août 2009 Dernière intervention - 22 nov. 2005 à 12:05 - Dernière réponse : cs_deubal 198 Messages postés mercredi 26 novembre 2003Date d'inscription 26 août 2009 Dernière intervention
- 23 nov. 2005 à 09:17
bonjour,
suite a un message posté la semaine derniere concernant les transactions dans mon appli, une autre questions me vient.
je resitue mon projet:
j'au une appli lié a 3 tables d'une bdd informix. on peut consulter, ajouter, modifier, supprimer les enregistrements. toutes mes requetes insert et update son sur un meme bouton. je teste si c'est une creation ou une modification des données et les requetes sont adaptés alors.
Je veux mettre des transactions pour encadrer mes requetes. je fais un truc du style :
madatabase.starttransaction;
query.sql.clear;
query.sql.add('update...')
try
query.execsql
madatabase.commit
except
madatabase.rollback
end;

pour faire un update ou insert plusieurs tables sont concernés j'ai donc 3 requetes update pour une modifications et autant de requetes pour une creation.
Est-ce que je peut mettre toutes les requetes dans la meme transaction ou dois je creer une transaction pour chacune des requetes ??
en vous remerciant
Bonne journee
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
vincentstryckmans 230 Messages postés lundi 5 avril 2004Date d'inscription 25 octobre 2006 Dernière intervention - 23 nov. 2005 à 07:54
3
Merci
Gasp, erreur de ma part .

Dans mon précédent message je devais écrire :

Tu as plus qu'intérêt à faire le travail dans une seule transaction

au lieu de

Tu as plus qu'intérêt à faire le travail dans une seul requête


Donc, on recommence tout et d'abord répondre aux deux question de ton derneir message :



si je fais une seule transaction, si y a une erreur tout sera annulé : oui

C'est le principe de base des serveurs sql.



si je fais une transaction par requete, si ya une erreur, seule la requet concernée sera annulée : oui

cel rejoint ta première question, avec le
risque d'avoir des problèmes d'intégrité référentielle entre tes
tables.



Bref, si tu souhaites faire un insert de données qui s'effectue
sur plusieurs tables, tu peux écrire une requête 'insert' par table le
tout englobé dans une seule transaction, englobé dans un try except.




Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.

Merci vincentstryckmans 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de vincentstryckmans
vincentstryckmans 230 Messages postés lundi 5 avril 2004Date d'inscription 25 octobre 2006 Dernière intervention - 22 nov. 2005 à 12:57
0
Merci
Bonjour,



Tu as plus qu'intérêt à faire le travail dans une seul requête, ainsi
tu es sûr que tout est enregistré ou bien rien n'est enregistré.

Ce qui est grandement préférable au niveau des diverses intégrités référentielles de bases de données.

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
Commenter la réponse de vincentstryckmans
cs_deubal 198 Messages postés mercredi 26 novembre 2003Date d'inscription 26 août 2009 Dernière intervention - 22 nov. 2005 à 14:01
0
Merci
j'ai bien essayé de tout mettre dasn une seule requte, le probleme c'est que certaines de mes requetes depedent de resultats a des if. donc je fais differentes requetes...
si je reste a faire plusieurs requetes (par necessité) est ce que je peux les regrouper dans une meme transaction ou je fais une transaction par requete?
merci par avance
Commenter la réponse de cs_deubal
cs_deubal 198 Messages postés mercredi 26 novembre 2003Date d'inscription 26 août 2009 Dernière intervention - 22 nov. 2005 à 14:04
0
Merci
je me demandais :
si je fais une seule transaction, si y a une erreur tout sera annulé
si je fais une transaction par requete, si ya une erreur, seule la requet concernée sera annulée
Peux-tu valider ce que je dis ??
Commenter la réponse de cs_deubal
cs_deubal 198 Messages postés mercredi 26 novembre 2003Date d'inscription 26 août 2009 Dernière intervention - 23 nov. 2005 à 09:17
0
Merci
en effet, j'ai donc opté pour plusieurs requetes le tout dans une seule transaction. Et ca marche impec'.
Je te remercie d'avoir pris le temps de me repondre. Bonne journée
Commenter la réponse de cs_deubal

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.