cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009
-
22 nov. 2005 à 12:05
cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009
-
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
vincentstryckmans
Messages postés228Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention25 octobre 2006 23 nov. 2005 à 07:54
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.
cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009 22 nov. 2005 à 14:01
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
cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009 22 nov. 2005 à 14:04
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 ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009 23 nov. 2005 à 09:17
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