当前位置: 代码迷 >> Oracle开发 >> oracle事务操作的有关问题
  详细解决方案

oracle事务操作的有关问题

热度:89   发布时间:2016-04-24 07:25:51.0
oracle事务操作的问题
我一个存储过程中,要先查询一个表,然后根据结果做出相应操作,比如:

select xx from table T
if (no record) then
insert xxx to T
else
do something else
commit


当这个存储过程被连续快速调用2次时,第一次的调用事务还没有结束,而第二次调用已经开始,所以查到表T里没有记录,所以会执行insert操作,这个是我所不希望的。

我希望严格的控制,当第一次事务还没有结束时,insert操作对表T加锁,这个时候任何其他事务都不能查询,必须等待到第一次事务结束为止。

不知道有没有办法实现?



------解决方案--------------------
SQL code
lock table t in exclusive mode;--在你的select xx from table t前加句update t set xx=xx where 1=2;select xx from table T;
  相关解决方案