【问题标题】:How can I get the table name in a Oracle trigger function?如何在 Oracle 触发器函数中获取表名?
【发布时间】:2022-01-27 09:32:09
【问题描述】:

如何在触发函数中获取表名?

类似于 Postgres 中的TG_TABLE_NAME,例如this

Oracle 10g 或以上。

【问题讨论】:

  • ora_dict_obj_name
  • 请描述您使用的触发器类型。 Oracle 中的触发器与 Postgres 中的不同:它们是“就地”创建并附加到特定表的,而不是 create function... return trigger,您必须为 every 表编写一些代码。这就是为什么您在开始编码时已经知道对象名称的原因。对于数据库/模式触发器,您可以使用ora_dict_obj_name,如上面评论中所述。

标签: sql oracle plsql triggers


【解决方案1】:

这是user_triggers 的观点(如果我理解正确的话)。

SQL> create table test (id number, name varchar2(20));

Table created.

SQL> create or replace trigger trg_test
  2    before insert on test
  3    for each row
  4  begin
  5    null;
  6  end;
  7  /

Trigger created.

SQL> select trigger_name, table_name from user_triggers;

TRIGGER_NAME                   TABLE_NAME
------------------------------ ------------------------------
TRG_TEST                       TEST                 --> this is the one I've just created
TRG_AIUD_EMP                   EMPLOYEES

SQL>

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2014-12-20
    • 2012-02-08
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多