oracle-- tom悲觀鎖演示
環境Release 10.2.0.1.0
悲觀鎖定:在修改資料前就在資料上加鎖防止其它使用者同時更新資料
會話1:使用者1查詢一些資料,想從這些資料中找出要更改的,比如它想要更新EMPNO=7934這一條
SQL> select empno,ename,sal from emp where deptno=10;
EMPNO ENAME SAL
---------- ---------- ----------
7782 CLARK 2450
7839 KING 5000
7934 MILLER 1300
會話2:在使用者1查詢後,更新前,使用者2的某個應用繫結了使用者1選擇的想要更新的資料,下面是模擬繫結
SQL> variable empno number
SQL> variable ename varchar2(20)
SQL> variable sal number
SQL> exec :empno:=7934;:ename:='MILLER';:sal:=1300;
PL/SQL procedure successfully completed.
會話2:會話2的應用執行了以下查詢,這使得會話2應用繫結變數中的值,然後重新從資料庫中查詢這一行,還鎖定了這一行,不讓其它會話更新這一行
SQL> select empno,ename,sal from emp where empno=:empno and ename =:ename and sal =:sal for update nowait
2 /
EMPNO ENAME SAL
---------- ---------- ----------
7934 MILLER 1300
SQL>
會話1:假設會話1這個時候終於選好要更新那一行了,而且恰好就是EMPNO=7934這行,並執行更新操作。
SQL> update scott.emp set sal=1500 where ename='MILLER';
這個時候這條語句執行了,但是停在那不會出錯也不會說更新成功,直到會話2 COMMIT;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15720542/viewspace-721813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- laravel樂觀鎖和悲觀鎖Laravel
- mysql悲觀鎖以樂觀鎖MySql
- MySQL鎖(樂觀鎖、悲觀鎖、多粒度鎖)MySql
- java-樂觀鎖與悲觀鎖Java
- MySQL樂觀鎖和悲觀鎖介紹MySql
- Java中的鎖之樂觀鎖與悲觀鎖Java
- 面試必備之悲觀鎖與樂觀鎖面試
- Redis的事務、樂觀鎖和悲觀鎖Redis
- MySQL 悲觀鎖與樂觀鎖的詳解MySql
- 面試必備之樂觀鎖與悲觀鎖面試
- Java彌散系列 - 樂觀鎖與悲觀鎖Java
- SQLServer樂觀鎖定和悲觀鎖定例項SQLServer
- 樂觀鎖與悲觀鎖及應用舉例
- 資料庫中的悲觀鎖和樂觀鎖資料庫
- 【鎖機制】共享鎖、排它鎖、悲觀鎖、樂觀鎖、死鎖等等
- 在MongoDB中使用悲觀鎖MongoDB
- 悲觀鎖定的應用
- Java 中的悲觀鎖和樂觀鎖的實現Java
- synchronized 作為悲觀鎖,鎖住了什麼?synchronized
- 死磕java concurrent包系列(一)從樂觀鎖、悲觀鎖到AtomicInteger的CAS演算法Java演算法
- Mybatis Generator Plugin悲觀鎖實現MyBatisPlugin
- 利用MySQL中的樂觀鎖和悲觀鎖實現分散式鎖MySql分散式
- 悲觀鎖與樂觀鎖的實現(詳情圖解)圖解
- 【每日鮮蘑】從資料庫看樂觀鎖、悲觀鎖資料庫
- 面試必備的資料庫悲觀鎖與樂觀鎖面試資料庫
- 小議“悲觀鎖和樂觀鎖”的原理、場景、示例
- 關於樂觀鎖與悲觀鎖的實際應用
- SSM (十五) 樂觀鎖與悲觀鎖的實際應用SSM
- 樂觀鎖和悲觀鎖策略的區別與實現
- SQL SERVER樂觀鎖定和悲觀鎖定使用例項SQLServer
- oracle-tom死鎖演示Oracle
- Java鎖最全詳解:樂觀鎖/悲觀鎖+公平鎖/非公平鎖+獨享鎖/共享鎖Java
- 樂觀鎖和悲觀鎖在kubernetes中的應用
- 悲觀的併發策略——synchronized互斥鎖synchronized
- 基於mysql分散式悲觀鎖原理MySql分散式
- MySQL/InnoDB中,樂觀鎖、悲觀鎖、共享鎖、排它鎖、行鎖、表鎖、死鎖概念的理解MySql
- Java併發程式設計(05):悲觀鎖和樂觀鎖機制Java程式設計
- Spring Boot2+JPA之悲觀鎖和樂觀鎖實戰Spring Boot