Dans un environnement de contrôle de commitment, on fait suivre les instructions de mise à jour individuelles ou les groupes d’instructions de mise à jour par une instruction Commit ou Rollback. Comme DB2 retire automatiquement les mises à jour partiellement effectuées quand votre job se termine, vous devez indiquer explicitement
Les instructions SQL Commit et Rollback
quand toutes les mises à jour associées sont prêtes à être « committed » (c’està- dire rendues permanentes). Dans l’exemple précédent, l’instruction Commit suivrait immédiatement l’instruction Update, comme dans la séquence suivante :
Update Customer Set Discount = Discount + 0.001 Where Discount Is Not Null Commit
Si l’instruction Update s’exécute bien, dès que l’instruction Commit se termine, les changements apportés à la table Customer sont permanents. En substance, DB2 ajoute au journal une entrée disant que les mises à jour des lignes dont les images avant étaient précédemment sauvegardées, ont maintenant été terminées et « committed ».
On l’a vu, vous pouvez utiliser le contrôle de commitment pour grouper plusieurs instructions de mise à jour dans une seule transaction (aussi appelée une unité logique de travail). Tous les changements de base de données pour des instructions Update, Insert et Delete dans une transaction peuvent être désormais garantis pour une exécution en mode « tout ou rien » : c’est-à-dire que les changements se feront tous, ou pas du tout. Revenons à notre transaction de banque classique. Avec le contrôle de commitment, la séquence d’instructions de base (en ignorant le traitement des erreurs) serait :
Update Saving Set Balance = Balance – 100.00 Where AccID = 123987
Update Checking Set Balance = Balance + 100.00 Where AccID = 12387
Commit
Si vous décidez d’écarter les mises à jour qui n’ont pas encore été « committed », vous pouvez exécuter une instruction Rollback qui, en SQL, est tout simplement
Rollback
Si vous le souhaitez, vous pouvez ajouter le mot-clé Hold à Commit ou Rollback, comme dans l’exemple suivant :
Commit Hold
Avec Hold, toutes les instructions SQL préparées sont gardées (sans Hold, elles disparaissent quand on exécute une instruction Commit ou Rollback). De plus, le mot-clé Hold évite de libérer des verrous de table. Vous pouvez aussi ajouter le mot-clé Hold pour éviter de fermer des curseurs SQL imbriqués. Mais, le plus souvent, il existe une meilleure solution pour garder les curseurs ouverts : coder l’option With Hold sur l’instruction Declare Cursor elle-même.
À noter qu’il n’existe pas d’instruction SQL « begin transaction ». En effet, DB2 commence toujours une transaction de manière implicite – soit quand vous démarrez un environnement de contrôle de commitment, soit quand vous terminez la transaction précédente par une instruction Commit ou Rollback.
Lorsque des instructions Commit et Rollback sont imbriquées dans des programmes SQL, les points principaux à considérer sont les suivants : où placer ces instructions dans la logique du programme et quel est l’impact d’un commit ou rollback sur les autres ressources, telles que des curseurs ouverts. On l’a vu, vous devez vous efforcer de coder Commit et Rollback au(x) point(s) de l’application où vous avez terminé (avec ou sans succès) toutes les instructions SQL impliquées dans une transaction.
Téléchargez cette ressource
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Baromètre channel IT : fin du cuivre, essor de UCaaS et premiers pas vers l’IA
- Fraude par identité synthétique : comment l’IA peut redonner confiance aux entreprises et à leurs clients
- VirtualBrowser protège la navigation web à la source
- Innovation et performance : le rôle clé du consulting dans la transformation numérique
Articles les + lus
Moderniser le développement logiciel : de la fragmentation à l’intégration
Analyse Patch Tuesday Mars 2026
Une nouvelle ère de la modernisation du mainframe
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
À la une de la chaîne Tech
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
