|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 109 ![]() |
Bonjour; voici le code mon trigger en question :
Code :
1 - un USERXXX se connecte à la database 2 - le trigger va chercher son nom et sa date de cnx dans la vue v_$session 3 - on crée un mot de passe aléatoire unique pour se user 4 - on update ce nouveau mot de passe, user, date_cnx, le statut du user (LIBRE, CONNECTE, RESERVE, etc...) etc... dans la table UTILISATEUR_ORA 5 - on COMMIT 6 - on crée un job (auto_dropper à priori et de priorité maximale =1) afin d'effectuer l'ALTER USER USERXXX IDENTIFIED BY nouveau_motdepasse 7 - FIN Or lorsque je teste le trigger via un loop infini de connections de USERXXX, et une table UTILISATEUR_ORA de 2 enregistrements, j'arrive (au bout d'un laps de temps) soit : 1 - les 2 tuples de UTILISATEUR_ORA sont tous à 'RESERVE', et donc autoblocage : cela arrive lorsque deux tuples différents sont réservés en même temps par deux users USERXXX différent [ce qui est normal!]; 2 - l'un des 2 tuples est bloqué à 'RESERVE', l'autre tuple est donc utilisé alternativement par les deux USERXXX (passe de l'etat 'LIBRE' à 'RESERVE' et inversement) et tout se passe bien . Donc à un moment de l'UPDATE de la table UTILISATEUR_ORA, il doit y avoir un autre UPDATE en cours pour que l’état reste à 'RESERVE' ? ou je ne sais pas ce qui se passe ? ![]() Le meilleur des comportements serait qu'un tuple d'UTILISATEUR_ORA reste locké même si user vient juste de se connecter. Comment faire faire cela à mon trigger ? ![]() Merci pour votre aide |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com