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
- MybatisPlus - [03] 樂觀鎖&悲觀鎖MyBatis
- msyql樂觀鎖和悲觀鎖
- MySQL鎖(樂觀鎖、悲觀鎖、多粒度鎖)MySql
- 小白科普:悲觀鎖和樂觀鎖
- 淺析樂觀鎖與悲觀鎖
- java-樂觀鎖與悲觀鎖Java
- 記一次悲觀鎖的使用,聊一聊悲觀鎖與樂觀鎖
- 併發控制——樂觀鎖和悲觀鎖
- MySQL樂觀鎖和悲觀鎖介紹MySql
- Java中的鎖之樂觀鎖與悲觀鎖Java
- JPA和Hibernate的樂觀鎖與悲觀鎖
- MySQL 悲觀鎖與樂觀鎖的詳解MySql
- Redis的事務、樂觀鎖和悲觀鎖Redis
- Java彌散系列 - 樂觀鎖與悲觀鎖Java
- 面試必備之悲觀鎖與樂觀鎖面試
- 什麼是樂觀鎖,什麼是悲觀鎖
- 面試必備之樂觀鎖與悲觀鎖面試
- 樂觀鎖和悲觀鎖在kubernetes中的應用
- 樂觀鎖、悲觀鎖,這一篇就夠了!
- synchronized 作為悲觀鎖,鎖住了什麼?synchronized
- Mybatis Generator Plugin悲觀鎖實現MyBatisPlugin
- [轉帖]SQL Server 鎖機制 悲觀鎖 樂觀鎖 實測解析SQLServer
- 利用MySQL中的樂觀鎖和悲觀鎖實現分散式鎖MySql分散式
- 悲觀鎖與樂觀鎖的實現(詳情圖解)圖解
- 【每日鮮蘑】從資料庫看樂觀鎖、悲觀鎖資料庫
- 關於樂觀鎖與悲觀鎖的實際應用
- 小議“悲觀鎖和樂觀鎖”的原理、場景、示例
- Java鎖最全詳解:樂觀鎖/悲觀鎖+公平鎖/非公平鎖+獨享鎖/共享鎖Java
- Spring Boot2+JPA之悲觀鎖和樂觀鎖實戰Spring Boot
- 面試必備的資料庫悲觀鎖與樂觀鎖面試資料庫
- 基於mysql分散式悲觀鎖原理MySql分散式
- 悲觀的併發策略——synchronized互斥鎖synchronized
- MySQL/InnoDB中,樂觀鎖、悲觀鎖、共享鎖、排它鎖、行鎖、表鎖、死鎖概念的理解MySql
- 解鎖你的資料庫:JPA和Hibernate的樂觀鎖與悲觀鎖資料庫
- Java併發程式設計(05):悲觀鎖和樂觀鎖機制Java程式設計
- Java開發技巧——併發控制中的樂觀鎖與悲觀鎖Java