SELECT a.*,rowid FROM test a;
SELECT * FROM test a FOR UPDATE;
- 1
- 2
for update 語句運行時,
會在對應行(where 條件)加上行級鎖,如果沒有where條件,會對全表進行加鎖 ,當其他人忘記提交或者回滾事務的時候,就會發生鎖表,只適合單人進行操作,不適合多人同時操作;
rowid 運行的時候,
並沒有給數據加上行級鎖,可以對數據進行編輯,提交的瞬間完成上鎖,提交,解鎖等動作。所以,當多人對表進行操作的時候,並不會產生無法操作的現象。
for update 和 rowid 的區別
SELECT a.*,rowid FROM test a;
SELECT * FROM test a FOR UPDATE;
for update 語句運行時,會在對應行(where 條件)加上行級鎖,如果沒有where條件,會對全表進行加鎖 ,當其他人忘記提交或者回滾事務的時候,就會發生鎖表,只適合單人進行操作,不適合多人同時操作;
rowid 運行的時候,並沒有給數據加上行級鎖,可以對數據進行編輯,提交的瞬間完成上鎖,提交,解鎖等動作。所以,當多人對表進行操作的時候,並不會產生無法操作的現象。