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
![Comment lutter contre le Phishing ?](https://www.itpro.fr/wp-content/uploads/2024/07/Special-Report-Eviden-Securite-Phishing-Juillet-2024.png)
Comment lutter contre le Phishing ?
Dans un environnement cyber en constante mutation, le phishing évolue vers des attaques toujours plus sophistiquées combinant IA, automatisation et industrialisation. Une réalité complexe qui exige des mesures de sécurité avancées et repensées au-delà de l’authentification multifacteur. Découvrez les réponses technologiques préconisées par les experts Eviden et les perspectives associées à leur mise en œuvre.
Les articles les plus consultés
- Cybersécurité Active Directory et les attaques de nouvelle génération
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Activer la mise en veille prolongée dans Windows 10
- Les 6 étapes vers un diagnostic réussi
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
Les plus consultés sur iTPro.fr
- Stimuler l’innovation durable grâce à la transformation numérique et aux principes ESG
- Retour au bureau avec Copilot M365
- Les entreprises optent pour des solutions durables
- Le rôle clé du no-code/low-code dans la transformation numérique
- Le rôle de l’intelligence Artificielle dans le Cloud Computing
![Revue Smart DSI](https://www.itpro.fr/wp-content/uploads/2024/07/SMART-DSI-Numero-34-Juin-2024.jpg)