Bonjour
j'ai 3 tables :A,B,C ou B est la table de lien entre A et C (1 record de A est associé à 1 à n record dans C).

Table A........Table B.........Table C
X................X / 1................1
Y................X / 3................2
Z................X / 2................3
. ...............Z / 4................4

Suppression:
Lorsque je veux supprimer un record dans A, je commence par supprimer les associations dans B.
1° begin trans
2° delete records X dans Table B
3° delete record X dans Table A
4° commit

Mise à jour:
Dans une application windows .NET, lorsq'un utilisateur veut modifier le record Z dans A (et donc dans B), je lock les records Z dans les tables A & B comme ceci:
"SELECT * FROM A INNER JOIN B ON ... WHERE ID=Z FOR UPDATE NOWAIT"
ensuite l'utilisateur valide sa saisie et je fais un COMMIT.

problème :
Lorsq'un utilisateur modifie le record Z et que pendant ce temps un autre utilisateur veut supprimer le record X, j'ai comme un deadlock sur l'étape 3° de la suppression. D'après ce que je vois, oracle a posé un verrou exclusif sur la table B.

j'ai utilisé la clause "FOR UPDATE OF A.ID" pour le lock de mise à jour et dans ce cas pas de blocage mais les records X de la table B ne sont pas lockés

Question : comment verrouiller les records X des tables A & B tout en permettant le verrouillage en vue d'une mise à jour de record Y des tables A & B ?
Merci