【发布时间】:2014-03-08 14:12:27
【问题描述】:
我们知道可以动态计算出当前正在执行的过程或包的名称,如here 和here 所述。这通常适用于从数据库中的其他存储过程(已编译)执行的语句。
问题:
我们一直在尝试通过在表上放置触发器并从触发器中调用 who_called_me 来记录特定列(称为 STATE)上的所有 UPDATE 活动。这样做的目的显然是根据应用程序设计,列STATE 可以根据某些业务条件通过多段代码(驻留在数据库中)进行更新。除此之外,该列还可以由基于休眠的应用程序的应用程序更新,并且有时当通过休眠查询发生更新时,who_called_me 函数不返回任何内容。应用程序中有多个部分也可以根据某些条件UPDATE 列STATE。
who_called_me 策略在存储过程(驻留在数据库中)发出UPDATE 语句并且who_called_me 成功捕获相应的所有者、名称、行号的情况下对我们很有效. 等的存储过程。但是如果UPDATE 发生在休眠状态,该函数不会捕获任何细节。
有没有办法通过触发器捕获该行的哪个休眠查询UPDATEd?或者有没有其他办法?
注意:触发代码与this问题上的答案类似。
【问题讨论】:
标签: oracle hibernate stored-procedures triggers