jlr*_*lin 3 oracle plsql oracle10g
我们目前正在尝试实现SELECT FOR UPDATE以锁定行.如果我跑:
SELECT * FROM data where rowid = 'AAAQA5AAGAACNbEAA1' FOR UPDATE;
SELECT * FROM data where rowid = 'AAAQA5AAGAACNbEAA1' FOR UPDATE NOWAIT;
Run Code Online (Sandbox Code Playgroud)
我在ORACLE SQL Developer中得不到任何回报.这不应该给我一个错误吗?这与使用相同的用户ID有关吗?
你是什么意思"我什么也得不回"?你是说这两个查询都没有返回任何行吗?如果是这样,那意味着表中没有具有该ROWID的行.你的意思是第一个(或第二个)陈述永远不会回来吗?如果是,则会阻止会话等待获取锁定.
锁定由会话持有.如果两个语句在同一会话中运行,则第二个语句将成功,因为第一个语句已获得锁定.如果第二个语句在恰好由同一用户打开的另一个会话中运行,则应生成该行已被另一个会话锁定的异常.
归档时间: |
|
查看次数: |
11522 次 |
最近记录: |