* Bonjour, *
Je suis récemment sorti du collège où j'ai appris que les LOCK sont appliqués pendant des transactions avec le RDBMS pour éviter la saisie de mauvaises données lorsque des transactions simultanées sont faites sur le même enregistrement.
Dans le cadre de mon travail pour une firme de développement de logiciels, je dois adapter le code pour qu'on soit en mesure d'utiliser Microsoft SQL Server (le code a été développé pour rouler avec Advantage Database Server).
Mon mandat est de faire fonctionner nos logiciels avec Microsoft SQL Server sans effectuer de modifications dans le code actuel et sans modifier le comportement des applications.
Ma question :
Comme je n'ai pas travaillé pour d'autres entreprises et que je n'ai jamais vu ça dans mes cours au collège, j'aimerais savoir si l'utilisation des LOCKS dans notre logiciel actuel est une pratique courante en 2017 :
1- l'usager Alpha entre en édition dans un Mémo concernant un Projet Z.
2- une commande est envoyée au RDBMS (Advantage) pour verrouiller le Mémo concernant le Projet Z (un lock est appliqué sur l'enregistrement 'Mémo' du 'Projet Z')
3- Une minute plus tard, un collègue, l'usager Bêta, désire ajouter de l'information dans le Mémo du Projet Z.
4- Notre code vérifie si l'enregistrement est verrouillé. En effet, il est verrouillé donc on ouvre un pop-up pour informer l'usager Bêta que le Mémo est déjà utilisé par l'usager Alpha et qu'il ne peut pas le modifier.
Je comprends l'avantage de cette pratique. Mais il me semble que ce n'est pas très agréable pour les usagers ...
(ma question est motivée par la curiosité des pratiques actuelles relatives à la gestion de LOCK sur une base de données. Mais aussi par le fait qu'il m'est difficile de verrouiller un enregistrement sur Microsoft SQL Server pour une longue durée... Pour l'instant j'ai bidouillé une solution qui ne me satisfait pas : pour verrouiller un enregistrement, j'exécute un 'Begin transaction' sans le Commiter. Je conserve la connexion verrouillée dans une map(dictionnaire) que je conserve en donnée membre dans mon Dataset et pour relâcher le LOCK j'exécute un 'Rollback' sur la transaction. À court terme, ça fonctionne mais ça ne me semble pas très orthodoxe...)
* Merci *
Partager