oracle 在insert update delete ,使用select 。。for update 會自動加上行級鎖(tx),單獨的使用select 是不會加鎖的
例句 select * from table for update 【of column】【nowait|wait 3】;
使用for update時會對當前查詢結果鎖定,當有兩個事務a,b,同一個表的兩條數據X,Y,a事務使用行級鎖查詢了數據X,b事務直接select是不受鎖的影響的,但當b事務也涉及到鎖操作時,對應的操作會阻塞,如果給for update 語句後加上wait 約束,b事務在阻塞指定時間後會返回資源已經被佔用的錯誤,
User:
id
name
sex
注意事項:tx鎖在事務開始啓用,在事務提交後解鎖,所以如果是在大併發條件下的使用,應該最大程度的降低事務的時長,保證開始結束,以及約束涉及的相關的數據範圍,設計上所有共享數據應該不用或儘量少用for update