Bonjour,

dans la boite ou je suis, pour empecher que les utilisateurs modifient la même ligne en même temps, nous faisant un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT * FROM TABLE1 WHERE TBL_ID = 12345 FOR UPDATE NOWAIT
Dans notre application nous avons un bouton modifier que met l'application en mode modification et donc sur ce bouton on fait le "SELECT FOR UPDATE NOWAIT" -> si on recoit un exception c'est que c locker sinon on passe en mode modification.

Quand l'utilisateur reçoit l'exception, j'aimerai bien afficher un message d'erreur lui disant que tel ou tel autre personne est entrain de modifier pour cela j'ai fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
	select substr(object_name,1,20) "Object",
  substr(os_user_name,1,10) "Terminal",
  substr(oracle_username,1,10) "User",
  OBJECT_TYPE "Type",  
  A.OBJECT_ID, ROW_WAIT_OBJ#, ROW_WAIT_FILE#, ROW_WAIT_BLOCK#, ROW_WAIT_ROW#,
  dbms_rowid.rowid_create ( 1, ROW_WAIT_OBJ#, ROW_WAIT_FILE#, ROW_WAIT_BLOCK#, ROW_WAIT_ROW#)
FROM
  SYS.V_$LOCKED_OBJECT A,
  SYS.ALL_OBJECTS B,
  SYS.V_$SESSION c
WHERE
  A.OBJECT_ID = B.OBJECT_ID AND
  C.SID = A.SESSION_ID
et j'ai remarqué que A.OBJECT_ID est different de ROW_WAIT_OBJ#, ce qui à mon sens est normal vu que personne n'est bloqué et en attente.

A.OBJECT_ID represente TABLE1 tandis que ROW_WAIT_OBJ# une autre TABLE X

Ceci reprensente un probleme car je ne peux pas recupere le rowid de la ligne lockée dans TABLE1 car dbms_rowid.rowid_create ( 1, ROW_WAIT_OBJ#, ROW_WAIT_FILE#, ROW_WAIT_BLOCK#, ROW_WAIT_ROW#) me donne le ROWID dans TABLE X.

Est-ce que vous avez une autre solution à me proposer ??

Merci beaucoup