我完全不理解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