【问题标题】:Get statement which fire trigger in Oracle获取 Oracle 中触发触发器的语句
【发布时间】:2017-07-20 02:31:22
【问题描述】:

我试图获取触发我的触发器的语句,但我发现了任何东西.... oracle 8i 中有一个提示,但现在不起作用。

我使用的是 Oracle 10 和 11g。

我尝试使用 BEFORE 或 AFTER 触发器,并在 v$session 中使用 SQL_ID 或 PREV_SQL_ID 进行此查询:

 select substr(e.program,1,20),sql_text into l_program, sql_text 
 from v$sql s, v$session e
  where s.sql_id = e.sql_id
  and e.status = 'ACTIVE'
    and e.sid = sys_context('USERENV','SID')
    and rownum = 1;

要么我得到当前语句(在 v$session 中),要么是我的更新查询之前触发触发器的语句......

我也尝试过复合触发器,但是一样...因为我想,如果我尝试在语句之前或之后获取语句,它将起作用...没有...。

有人有想法吗?我不相信没有解决方案...

【问题讨论】:

    标签: sql oracle oracle11g triggers


    【解决方案1】:

    我们有这样的触发器来捕获 sql,它工作了多年,但在 oracle 10 中变得不可靠,并在 Oracle 11 中完全停止工作。

    仅供参考:复合触发器在 Oracle 10 中不可用(但无论如何也无济于事)。

    现在捕获sql语句唯一可靠的方法是通过Standard Auditing

    您必须选择要审核的操作类型,并将其应用于要捕获 sql 的所有表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多