Bonjour,
J'ai une interface utilisateur qui permet de faire des modifications sur un enregistrement précis en base (avec un update).
L'utilisateur sélectionne la ligne à modifier, une IHM se lance en renseignant les valeurs de la ligne dans un formulaire, un fois les modifications apportées (apres qques minutes), l'utilisateur les sauvegarde et donc un update est fait en base.
Le problème est que je peux avoir plusieurs utilisateurs qui décident de mettre à jour le même enregistrement au même moment. Je voudrais donc interdire à un utilisateur de lancer l'IHM de modification quand un autre utilisateur est deja en train de le modifier.
J'ai entendu parlé des verrous (lock) mais d'après ce que j'ai compris, ceux ci sont utilisés pour une transaction (SELECT, UPDATE, INSERT) , alors que moi je voudrais plus le faire pour une "session" (l'utilisateur dans l'IHM).
--
En resumé, je veux locker une ligne precise pour un temps indeterminé pour un utilisateur qui peut faire ce qu'il veut dessus (UPDATE, DELETE).
Mais je veux que cette ligne soit accessible en lecture par les autres utilisateurs (SELECT).
Les verrous oracle sont ils adaptés à cela?
Ou faut il que je fasse une gestion manuelle en ajoutant une colonne LOCK_ a ma table contenant l'ID de l'utilisateur pouvant modifier la table et en esperant que mon utilisateur quitte l'appli proprement pour que je puisse delocker ma table à la main (remettre le champs LOCK_ à NULL).
Partager