2

当我在 oracle 11g SQL*Plus 中执行此查询时,我的会话挂起:

SQL> 
 declare maxid number;

 begin

  delete from  measure_details
 where id in (select id from general_measures  where code in ('12345','12346'));

 delete from general_measures
 where code in (select code from general_measures  where code in ('12345','12346'));

 end;
 /
4

2 回答 2

2

如果它“挂起”,那么这可能意味着您尝试删除的一个或多个行被另一个会话中的未提交事务锁定 - 甚至可能是您自己的另一个会话?

于 2011-08-22T14:43:52.787 回答
1

如果您在这种 DML 中遇到死锁,我首先怀疑的是非索引外键。看看来自 Ask Tom的这篇文章。如果是这样的话。您需要做的就是创建适当的索引。但话又说回来,也许你的桌子太大了,需要一段时间才能完成。

于 2011-08-22T14:52:34.633 回答