当我在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;
/
答案 0 :(得分:2)
如果它“挂起”那么这可能意味着您尝试删除的一行或多行被另一个会话中的未提交事务锁定 - 甚至可能是您自己的另一个会话?
答案 1 :(得分:1)
如果您在这种DML中遇到死锁,我的第一个怀疑是非索引外键。看看Ask Tom的this文章。 如果是这样的话。您需要做的就是创建适当的索引。 但话说回来,也许你的桌子很大,需要一段时间才能完成。