Les transactions concurrentes peuvent conduire à des incohérences dans les données.
Cela peut entraîner des erreurs critiques et des pertes de données dans un environnement multi-utilisateurs.
L’article explore comment la clause FOR UPDATE en PL/SQL verrouille les enregistrements pour sécuriser vos transactions.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
La clause FOR UPDATE en PL/SQL permet de verrouiller les enregistrements sélectionnés par un curseur afin d’éviter des modifications concurrentes. Cela garantit que seuls les processus ayant acquis le verrou peuvent modifier les données. Ce verrouillage s’avère utile dans les transactions nécessitant une cohérence stricte des données.
Syntaxe FOR UPDATE avec curseur PL/SQL
CURSOR [ ( TYPE := [ , . . . ] ) ]
IS FOR UPDATE [ OF [ , . . . ] ]
[ { NOWAIT | WAIT } ];
- FOR UPDATE :Verrouille les enregistrements pour éviter les modifications par d’autres sessions.
- OF <nom_colonne> :Permet de spécifier les colonnes à verrouiller (optionnel).
- NOWAIT :Si un verrou est déjà en place, renvoie immédiatement une erreur.
- WAIT <nombre_de_secondes> :Attend un certain nombre de secondes pour obtenir le verrou avant de renvoyer une erreur.
Exemple de mise à jour avec FOR UPDATE PL/SQL
Dans l’exemple ci-dessous, un curseur cur_salaries est défini pour sélectionner toutes les lignes de la table salaries avec un verrouillage pour modification.
DECLARE
CURSOR cur_salaries IS SELECT * FROM salaries FOR UPDATE;
var_sal cur_salaries%ROWTYPE;
BEGIN
OPEN cur_salaries;
FETCH cur_salaries INTO var_sal;
UPDATE salaries SET commission = salaire / 2
WHERE fonction = 'Vendeur';
COMMIT;
CLOSE cur_salaries;
END;
/
Explication : Ce bloc PL/SQL ouvre le curseur cur_salaries en utilisant l’option FOR UPDATE, puis effectue une mise à jour pour ajuster la commission de chaque employé dont la fonction est « Vendeur ». La commande COMMIT enregistre les modifications en base de données.
Voici le résultat de l’exécution de la requête SELECT * FROM salaries pour observer les changements dans la table salaries :
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment fonctionne la clause FOR UPDATE en PL/SQL ?
Quelle est la syntaxe de FOR UPDATE en PL/SQL ?
Pourquoi utiliser FOR UPDATE dans les transactions PL/SQL ?
Comment utiliser FOR UPDATE avec un curseur en PL/SQL ?
Quels sont les avantages de FOR UPDATE ?
Conclusion
En conclusion, maîtriser l’utilisation de FOR UPDATE est essentiel pour garantir l’intégrité des données dans vos transactions PL/SQL. Quelles autres fonctionnalités de PL/SQL utilisez-vous pour sécuriser vos transactions ?