در صورتی که دو کاربر قصد ویرایش یک رکورد را داشته باشند، کاربری که دیرتر دستور update را اجرا کرده Block خواهد شد و تا زمانی که کاربر اول(کاربری که زودتر رکورد را در اختیار گرفته) به تراکنش خاتمه ندهد، کاربر دوم در حالت Block باقی خواهد ماند.
--session 1: SQL> select sid from v$mystat where rownum=1; SID ---------- 2190 SQL> update USEF.TBL1 set id=1; 1 row updated
--session 2: SQL> select sid from v$mystat where rownum=1; SID ---------- 944 SQL> update USEF.TBL1 set id=1; Executing…
بلاک شدن session دوم را می توانیم از طریق دستور زیر ببینیم:
SQL> select SID,ID1,ID2,LMODE,block,request from v$lock where type='TX'; SID ID1 ID2 LMODE BLOCK REQUEST ---------- ---------- ---------- ---------- ---------- ---------- 944 458766 2511 0 0 6 2190 458766 2511 6 1 0
ممکن است کاربر دوم که تراکنشش در حالت انتظار قرار دارد، برای ما اولویت بیشتری داشته باشد. در این حالت چه راهکاری وجود دارد؟