簡體   English   中英

ORACLE PL / SQL:在Oracle SQL Developer中測試SELECT FOR UPDATE

[英]ORACLE PL/SQL: Testing SELECT FOR UPDATE in Oracle SQL Developer

我們目前正在嘗試實現SELECT FOR UPDATE以鎖定行。 如果我跑:

SELECT * FROM data where rowid = 'AAAQA5AAGAACNbEAA1' FOR UPDATE;
SELECT * FROM data where rowid = 'AAAQA5AAGAACNbEAA1' FOR UPDATE NOWAIT;

我在ORACLE SQL Developer中得不到任何回報。 這不應該給我一個錯誤嗎? 這與使用相同的用戶ID有關嗎?

你是什​​么意思“我什么也得不回”? 你是說這兩個查詢都沒有返回任何行嗎? 如果是這樣,那意味着表中沒有具有該ROWID的行。 你的意思是第一個(或第二個)陳述永遠不會回來嗎? 如果是,則會阻止會話等待獲取鎖定。

鎖定由會話持有。 如果兩個語句在同一會話中運行,則第二個語句將成功,因為第一個語句已獲得鎖定。 如果第二個語句在恰好由同一用戶打開的另一個會話中運行,則應生成該行已被另一個會話鎖定的異常。

您在已在事務中鎖定的表上請求鎖定。

您需要從不同的連接(即不同的事務)運行第二個SELECT

暫無
暫無

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

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