嵌套自治事务是否有用例?

时间:2010-01-31 22:23:46

标签: oracle transactions

我试图想出一个真实的编程问题,可以通过在自治事务中使用自治事务来最好地解决,但却无法想到。

你能给我任何想法吗?

编辑:

我的意思是这样的:

PROCEDURE outer_procedure
IS
BEGIN
  -- some code
  auto_proc1;
END;
/

PROCEDURE auto_proc1
IS PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  -- some code
  auto_proc2;
END;
/

PROCEDURE auto_proc2
IS PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  -- some code
  NULL;
END;
/

2 个答案:

答案 0 :(得分:2)

自主交易对于以下情况非常有用:

  • 如果要记录有关表中事务的信息,即使该事务失败/已回滚。如果您在没有自治事务的情况下执行此操作,则还将回滚日志记录。

  • 如果您有一个长事务需要对其他线程也使用的表进行短暂锁定。如果您在自主交易中执行此操作,即使交易需要很长时间,锁定也会很快进行。

答案 1 :(得分:0)

这可能有点紧张,但我相信这是集成场景中相对常见的情况:

我遇到的情况是我需要调用依赖于提交给数据库的数据的第三方程序,但我在外部事务中运行的业务逻辑依赖于第三方程序的返回。这要求我对第三方程序所需的数据使用嵌套(自治)事务,并为包含第三方程序返回的数据使用单独的事务。