簡體   English   中英

oracle 上的 select SQL 語句是否鎖定已使用的表以供其他連接更新?

[英]Does a select SQL Statement on oracle lock the used table for update by other connections?

oracle 上的 select SQL 語句是否鎖定已使用的表以供其他連接更新? 這取決於我是否在 jta 事務中進行選擇嗎? 我怎樣才能控制這個問題並防止只讀 SQL 語句鎖定表進行編輯?

我知道這是一個老問題,但我認為它值得一個更好的答案。 如果您在 DML 操作中引用自動鎖定,您會發現唯一會鎖定表的SELECT語句是那些帶有FOR UPDATE子句的語句,並且由於“沒有FOR UPDATE子句的查詢不會獲取任何數據鎖來阻止其他操作,例如查詢通常被稱為非阻塞查詢”。

這取決於很多東西——比如你的事務隔離設置。 即使在自動提交模式下,您的數據庫上也會有一些相當短的事務。

所以是的,SELECT可以創建其他人必須等待的鎖。

如果你想防止這種情況大規模發生並且知道你在做什么,事務隔離“讀未提交”將創建最少的鎖(並提供最少的保護)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM