1. 程式人生 > >Oracle 鎖住單表和單行記錄

Oracle 鎖住單表和單行記錄

記得前段時間面試時一面試官就問到 Oracle如何鎖住單條記錄的,當時自己不是在想答案,而是靠還有這麼問這麼變態的問題,對於沒用過Oracle的我一頭霧水,更別答案了,今天用到這個順便記錄下,廢話不多說進入正題:

單表加鎖

1.用scott使用者登入         查詢emp表並鎖定:select  t.*,  t.rowid  from emp t for update


2.然後用其他使用者登入,再進行更改emp表中的資料會提示表已被其他使用者鎖定


如果scott使用者無論rollback還是commit都能使emp表的鎖釋放,此時 其他使用者就可以操作了

鎖住單行

1.同樣用scott使用者登入只加where條件便可達目的        :select t.*, t.rowid from emp t where empno=7369 for update ;


2.然後用其他使用者登入,再進行更改emp表中的empno=7369和其它資料對比 會看到只有本行被鎖住


如果scott使用者無論rollback還是commit都能使empno=7369這條記錄的鎖釋放,此時 其他使用者就可以操作了此條記錄了