首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 查詢時鎖定記錄的標準做法:SELECT FOR UPDATE 實戰演示

     編輯:Oracle 資料庫相關知識

環境

  • OS:Windows 2000
  • DB:Oracle 8i R2 (8.1.6) Enterprise
  • 安裝路徑:C:\Oracle

實作步驟

-- Session 1
CONN system/manager
GRANT CONNECT, RESOURCE TO test IDENTIFIED BY test;
CONN test/test
CREATE TABLE a (a NUMBER);
INSERT INTO a VALUES (1);
COMMIT;

-- 加鎖查詢
SELECT * FROM a FOR UPDATE;          -- 鎖定整行
-- 或 SELECT * FROM a FOR UPDATE OF a.a;  -- 僅鎖定指定欄位

-- Session 2 (新視窗)
CONN test/test
DELETE FROM a;  -- 此處阻塞等待鎖釋放

鎖釋放方式

在 Session 1 執行 ROLLBACK; 或 COMMIT; 即可釋放鎖,Session 2 的 DELETE 隨即繼續執行。

注意事項

  • FOR UPDATE 預設等待無限制,可加 NOWAIT 或 WAIT n 控制等待行為。
  • 僅在交易明確需要防止併發修改時使用,避免長交易導致鎖爭用。
  • 鎖定粒度為行級,不影響同表其他資料的並發存取。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved