IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ Interbase/FirebirdConsultez toutes les FAQ

Nombre d'auteurs : 3, nombre de questions : 56, dernière mise à jour : 8 octobre 2006  Ajouter une question

 

Cette faq a été réalisée à partir des questions fréquement posées sur les forums InterBase et Firebird de et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci

Sur ce, nous vous souhaitons une bonne lecture.
L'équipe Firebird-Interbase de Developpez.com

SommaireLes transactions (2)
précédent sommaire suivant
 

Une transaction permet plusieurs choses et notamment d'isoler les traitements les uns des autres; Et est indispensable pour assurer la bonne cohérence des données.

Isoler les traitements les uns des autres :
Lorsqu'on développe une application client/serveur avec un SGBD, le plus souvent, ce SGBD va être interrogé et modifié par plusieurs programmes simultanément par les différentes machines connectées. Le type d'isolation permet notamment de pouvoir répondre précisément aux types de question suivante : Que se passe t'il si un utilisateur modifie plusieurs enregistrements qu'un autre est en train d'imprimer ?

On peut paramétrer les transactions pour déterminer le degré de visibilité des actions extérieures à la transaction (on parle de niveau d'isolation).
Ainsi sous Interbase si on utilise le niveau d'isolation le plus fort (snapshot) , les modifications apportées par l'utilisateur n'apparaitront pas sur l'impression. Dans ce mode à l'ouverture de la transaction, c'est comme si celle-ci prenait une photo instantannée de la base et tous les ordres SQL se trouvant dedans travailleraient sur cette photo.

Un niveau moins isolant est : readCommited. Dans ce mode les ordres SQL lisent les données qui sont validées. Dans ce mode les modifications peuvent apparaitre sur l'impression si elles ont été validées (Commit).

La bonne cohérence des données : Une transaction permet de grouper plusieurs actions SQL et de les rendre atomiques (indissociables). Cet aspect est très important car bien souvent la mise à jour de données ne peut se faire avec un seul ordre SQL. Par exemple lorsque vous faites un virement compte à compte, il y a (en simplifiant) deux actions : 1-Mise à jour du solde du compte émetteur et 2-Mise à jour du solde du compte destinataire. Dans l'opération 1 on va soustraire au solde le montant du virement et dans l'opération 2 on va ajouter le montant du virement au solde du compte. Que se passe t'il si par malheur votre machine tombe en panne juste après l'opération 1 ? Le compte émetteur est débité mais le compte récepteur n'a pas reçu le virement.... C'est inadmissible ! Encore une fois les transactions permettent d'éviter ce genre de catastrophe car on peut valider ou annuler tous les ordres SQL inclus dans la transaction. Ainsi l'opération 1 et l'opération 2 deviennent indissociables comme si c'était qu'une seule mise à jour.

Mis à jour le 20 juin 2005 Barbibulle Benjamin GAGNEUX

Le Commit permet de valider l'ensemble des ordres SQL passés dans la transaction (les ordres de mise à jour ou d'insertion de données). Ce n'est qu'une fois cet ordre exécuté que les données sont considérées comme étant cohérentes (et donc écrites) dans la base.

Le RollBack permet lui au contraire d'annuler tous les ordres SQL passés dans la transaction. Tous les ordres de modification ou d'insertion passés dans la transaction dont on a fait le Rollback sont 'annulés'.

Il est à noter que ces deux actions ont pour effet de fermer la transaction. (Et donc les ensembles de données attachés à cette transaction).

Si on veut maintenir la transaction ouverte il faut utiliser CommitRetaining et RollBackRetaining.

Mis à jour le 20 juin 2005 Barbibulle

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2021 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.