select * from tb_dinge where id = '10321' for update这个语句是在oracel中写的问题是:查询语句没有加for update就可以查出数据,加上for update后就一直在查询,一直到连接超时。
并且id换成其他的也可以查出数据。备注:tb_dinge是表名,id是tb_dinge的主键。连接oracel用的是PLsql软件。各位高手帮帮忙啊。
并且id换成其他的也可以查出数据。备注:tb_dinge是表名,id是tb_dinge的主键。连接oracel用的是PLsql软件。各位高手帮帮忙啊。
select * from tb_dinge where id = '10321' for update
这个只是会给表上ID=‘10321’这一行加上行级锁,只允许其他session查询,不允许修改,
对于你说的加上for update 之后一直在查询直到超时,这个好像还没遇到过也,你可以说详细点事怎么回事,这样才好模拟你的环境。
这一行被lock住了
找到该lock,结束session
或者commit
select * from tb_dinge where id = '10321' for update nowait
你先commit提交事务后再做。
或者查下那个session锁住了该表,然后kill
但是。。‘你先commit提交事务后再做。
或者查下那个session锁住了该表,然后kill’这个不明白。
就是表操纵语言 insert update delete 会加锁的
所以要提交
已写入 file afiedt.buf 1 select b.username,b.sid,b.serial#
2 from v$locked_object a,v$session b
3* where a.session_id=b.sid
SQL> /未选定行SQL> alter system kill session 'sid,serial#'