在Oracle中的长存储过程中锁定表

时间:2017-07-19 15:01:03

标签: oracle stored-procedures table-lock

我在oracle中有一个存储过程来删除大约8-10个表中的行。 我必须从表“Person”中删除一行。它有很多关系,如“Person_Health”,“Person_Claims”,“Person_Bills”等。再次,子表与其他表有关系。

我编写了一个存储过程,并通过子表循环删除子记录,然后最终删除了父表中的记录。 我没有使用任何类型的锁定/等待机制(我是初学者,不确定使用哪种机制)

有时,此过程失败。 使用SQL状态'61000'转换SQLException,错误代码'60',消息[ORA-00060:在等待资源时检测到死锁

问题是,由于(执行/插入/更新)请求在执行此存储过程时从应用程序的不同部分访问这些表,因此它经常失败。

有没有办法在删除时单独锁定表格?或者还有其他更好的方法来做到这一点。

注意:一种方法可能是为这些表添加“ ON DELETE CASCADE ”,这会自动删除子记录,但不是可能。< / p>

0 个答案:

没有答案