oracle执行sql一直“正在执行”,就是查不出结果,表非常简单

执行这两条sql就会出"正在执行",终止也终止不了,
`select * from SM_DICT_ITEM where sm_grkey ='CCFORM_TSGD_TYPE' for update

update SM_DICT_ITEM set sm_orderno =1 where sm_grkey ='CCFORM_TSGD_TYPE'`

执行下面的sql,啥也查不出来,只能查到本sql

select sid,serial#,sql_text,executions from v$sql join v$session on v$sql.sql_id=v$session.sql_id where cpu_time>20000;

阅读 4.2k
2 个回答

你是机器人吗?
for update是排它锁。
对于这个表你在别的地方锁住了,所以你执行for update 无法获得锁。你的session就会一只等待锁释放。
这也是程序中悲观锁的原理。

新手上路,请多包涵

select的时候不加 for update就可以了。

推荐问题