SQL(Oracle)数据库上的未提交删除如何影响其他操作?

时间:2014-06-19 09:39:54

标签: sql oracle plsql relational-database rdbms

情况如下:

  • 我们有一个XML文件,Java程序从中收集数据,将其开采的内容传递给PL / SQL SPC,该数据库在Oracle数据库中保存批量的200个元组(在我称之为TARGET的表中)
  • 我们正在进行一些测试,并试图从目标中删除;
  • 我们忘记了COMMIT;这个最新的行动
  • 我们运行该程序并且它一直停滞在第34批
  • 我们注意到我们没有提交删除,所以我们做了
  • 程序恢复正常运行,无需进一步操作

现在,DBA告诉我问题的原因是未提交的DELETE但是根据我的理解,实际的数据库上根本不存在未提交的修改,所以我怀疑这个停止可以再次验证由于一个bug在PL / SQL过程中。

所以,我的问题是: uncommited DELETE能以某种方式阻止交易吗?

1 个答案:

答案 0 :(得分:1)

更新需要锁定。您无法同时从两个事务更新同一记录。其中一个将不得不等待另一个提交或回滚。

我不是100%确定在这种情况下如何处理删除,但它们可能也会获得某种锁,如果不是更新所需的完全相同的行锁。即使不同的行受到影响,也可能有最大数量的事务可以在给定的块上工作(我到达这里......)