cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009
-
16 nov. 2005 à 16:20
cs_deubal
Messages postés198Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention26 août 2009
-
17 nov. 2005 à 14:06
bonjour,
voila j'ai mon appli qui utilise des liaisons vers une base de données Informix. tout fonctionne parafitement : consultation, ajout, modification, suppression des enregistrements concernés. Au boulot, on me demande de mettre des transactions dans les requetes sql update, insert, delete.
extrait de mon code :
query_deletefrn.SQL.Clear;
query_deletefrn.SQL.Add('DELETE FROM matable WHERE cle =' + quotedstr(cle.text));
query_deletefrn.ExecSQL;
query_deletefrn.Close;
Où est-ce que je dois mettre la dite transaction : dans le code delphi ou dans la requete et qu'est ce que je dois mettre ??
En vous remerciant par avance
Bonne fin de journée
vincentstryckmans
Messages postés228Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention25 octobre 2006 17 nov. 2005 à 12:41
Bonjour,
Comme le dit withehippo, cela dépend du serveur.
Pour Interbase, tu dois lier un compo TIBTransaction à ton compo TIBDataset.
La transaction et le query doivent bine sûr être liés à la même db et la transaction doit être démarrer avant d'ouvrir le query.
Tu peux le faire dans l'event BeforeOpen du dataset.
Dans l'event Afterclose, tu peux arrêter la transaction avec un commit ou un rollback.
Dasn l'event afterpost, tu puex par exemple exécuter un
commitretainning qui te garde la transaction ouverte mais applique les
changements à la db.
Attention, toujours vérifer que la transaction est fermé (not
my_transac.intransaction) avant de la démarrer (.starttransaction) et
toujours vérifier qu'elle est démarrée avant de faire un commit ou un
rollback. Au sinon c'est le plantage assuré.
Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 16 nov. 2005 à 17:39
Une transaction permet d'effectuer un ensemble de modifications d'une base; c'est à dire qu'avec une transaction on effectue toutes les modifications d'un coup ou aucunes (La base est toujours dans un état cohérent).
On distingue deux principaux mots clés pour gérer les transactions :
<LI>COMMIT : Validation de la transaction en cours.
<LI>ROLLBACK :Annulation de la transaction en cours. (Utile par exemple si sortie d'une procedure en try..except)</LI>
N.B. En cours de transaction, seul celui qui effectue les modifications, les voit. Elles seront uniquement visibles par tous au moment du COMMIT.
Après pour l'utilisation cela dépend de comment tu "attaques" les bases de données (Interbase, ADO ? ).
Cordialement.
<HR>
Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...