McA*_*hey 1 oracle triggers stored-procedures
我有一个Oracle触发器,它调用一个定义了PRAGMA AUTONOMOUS_TRANSACTION的存储过程.从触发器传递的值已经提交但似乎存储过程中的值不可用?我不是很肯定,因为调试/记录/提交的能力很难,输出的时间让我感到困惑.我想知道是否预期任何传递的值都可以在存储过程中使用,而不管AUTONOMOUS_TRANSACTION?谢谢
作为参数传入存储过程的值始终可用于存储过程.使用自治事务声明过程无关紧要.
在自治事务中运行的代码无法查看调用事务所做的更改.10次中有9次,当人们描述看到他们期望的数据的问题时,这就是问题的根源.
如果您的存储过程除了将某些内容写入日志表之外还执行任何操作,我将非常谨慎地使用自治事务.如果您使用自动事务来执行除日志记录之外的任何操作,则几乎肯定会错误地使用它们.而且你可能会引入一系列与竞争条件和交易完整性相关的错误.