我完全不理解SELECT FOR UPDATE的鎖定功能。Oracle SELECT FOR UPDATE - 演示?
這是我試過的。
CREATE TABLE ACCOUNT_TAB (
ACC_ID int NOT NULL PRIMARY KEY,
BALANCE int NOT NULL
);
INSERT INTO ACCOUNT_TAB
VALUES(1, 100);
SELECT * FROM ACCOUNT_TAB FOR UPDATE;
SELECT * FROM ACCOUNT_TAB;
兩個SELECT都將檢索該行,但不應該第一個查詢鎖定ACCOUNT_TAB表中的行嗎?
我已閱讀了有關會話的內容:來自同一個會話的查詢並不關心鎖定。我可以以某種方式在單個腳本文件中演示鎖定功能嗎?例如,我可以在一個腳本中運行兩個不同的會話,所以第二個調用將檢索一個錯誤,指出該行已被鎖定?
鎖定只是阻止更新或刪除,而不是選擇 –
好了,但仍是有一些方法來證明在一個腳本文件上的鎖?如果我選擇更新,然後執行兩個更新,則當然會允許這兩個更新,因爲我請求選擇進行更新。也許有可能同時運行2個交易? – Max
其他會話將不會看到轉換器,直到您提交'commit' – are