假设过程A 里面中有个dml的操作会触发一个触发器,这个触发器里面的过程B和过程A中剩下的工作是并行的还是串行执行的?  我做了个简单的实验发现Oracle并没有新开线程来执行触发器里的过程。  而且当我将触发器用“独立事务”的方式替代后从得到的结果来看也并没开新线程,也就是说独立事务和调用独立事务的事务也不是并行的。 实验很简单,不知道得到的结论对不对,请高手指点一下。

解决方案 »

  1.   

    都是blocking方式执行的,也就是说都是串行同步执行的。不会创建新线程。
      

  2.   

    也许可以通过实现一个外部存储过程(java或c实现),在实现部分创建一个新的线程并执行,结束以后通过pipe message发送一个通知给管道。你在后来的调用里头通过询问管道,可以得到完成的通知。过程是有点别扭,但估计可行。