for update 和 for update of 有什麼區別
1
select * from TTable1 for update
鎖定表的所有行,只能讀不能寫
2
select * from TTable1 where pkid = 1 for update
只鎖定pkid=1的行
3
select * from Table1 a join Table2 b on a.pkid=b.pkid for update
鎖定兩個表的所有記錄
select * from TTable1 for update
鎖定表的所有行,只能讀不能寫
2
select * from TTable1 where pkid = 1 for update
只鎖定pkid=1的行
3
select * from Table1 a join Table2 b on a.pkid=b.pkid for update
鎖定兩個表的所有記錄
這個有語句是鎖定倆表的符合id匹配條件的所有記錄,而不是鎖定倆表的所有記錄.予以更正 |
這個有語句是鎖定倆表的符合id匹配條件的所有記錄,而不是鎖定倆表的所有記錄.予以更正 |
這個有語句是鎖定倆表的符合id匹配條件的所有記錄,而不是鎖定倆表的所有記錄.予以更正 |
(這個有語句是鎖定倆表的符合id匹配條件的所有記錄,而不是鎖定倆表的所有記錄.予以更正)
4
select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update
鎖定兩個表的中滿足條件的行
5.
select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update of a.pkid
只鎖定Table1中滿足條件的行
4
select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update
鎖定兩個表的中滿足條件的行
5.
select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update of a.pkid
只鎖定Table1中滿足條件的行
備註:
for update of 說得不對,根據oracle文件,它是用來鎖欄位的。
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10826/pco03dbc.htm#i4233
Restrictions
You cannot use FOR UPDATE with multiple tables, but you must use FOR UPDATE OF to identify a column in the table that you want locked. Row locks obtained by a FOR UPDATE statement are cleared by a COMMIT, which explains why the cursor is closed for you. If you try to fetch from a FOR UPDATE cursor after a commit, Oracle generates a Fetch out of Sequence error.
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10826/pco03dbc.htm#i4233
Restrictions
You cannot use FOR UPDATE with multiple tables, but you must use FOR UPDATE OF to identify a column in the table that you want locked. Row locks obtained by a FOR UPDATE statement are cleared by a COMMIT, which explains why the cursor is closed for you. If you try to fetch from a FOR UPDATE cursor after a commit, Oracle generates a Fetch out of Sequence error.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-670801/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- (轉)資料庫oracle for update of和for update區別資料庫Oracle
- TDengine 3.0 的 Update 有何區別?
- apt的update和upgrade區別APT
- yum upgrade和yum update區別
- select for update nowait 與 select for update 區別AI
- for update和for update nowaitAI
- FOR UPDATE NOWAIT和 FOR UPDATEAI
- *和body有什麼區別
- Cache 和 Buffer 有什麼區別?
- mongodb和mysql有什麼區別MongoDBMySql
- shim和polyfill有什麼區別
- float和double有什麼區別?
- int 和 Integer 有什麼區別
- cookie和session 有什麼區別?CookieSession
- session 和 cookie 有什麼區別?SessionCookie
- modbus和tcp有什麼區別?TCP
- Nginx和Apache有什麼區別?NginxApache
- COOKIE和SESSION有什麼區別?CookieSession
- RegisterClass和RegisterClassEx有什麼區別?
- PEAR 和 PECL 有什麼區別?
- Activity和Fragment有什麼區別Fragment
- vue和react有什麼區別?VueReact
- Iterator和ListIterator有什麼區別
- Hifi和ONT 有什麼區別
- DOM和BOM有什麼區別?
- xpath和dom有什麼區別?
- cookie是什麼?和session有什麼區別?CookieSession
- IPFS和區塊鏈有什麼區別區塊鏈
- Oracle中的for update 和 for update nowaitOracleAI
- Java和Python是什麼?有什麼區別?JavaPython
- Oracle中select for update ...一些區別Oracle
- RPA和IPA有什麼區別
- Jsp和Servlet有什麼區別?JSServlet
- HTTP和HTTPS有什麼區別?HTTP
- VPS和HTTP有什麼區別?HTTP
- 命令和事件有什麼區別? - Oskar事件
- c++中&和&&有什麼區別C++
- DAO和Repository有什麼區別