如何在 Oracle 中获取触发器的 user/creation 日期

How to get user/creation date of Trigger in Oracle

有什么办法可以得到触发器的创建日期(时间)吗?

我尝试了以下查询:

select CREATED from user_objects where object_name = '&MY_TRIGGER_NAME'

但我想,我得到的是最后一个 modification/run 日期,而不是创建时间。

另外,我想获取创建触发器的用户...如果可能的话。

user_objects 视图中有一个名为“created”的字段,它告诉对象的创建时间。还有另一个名为 last_ddl_time 的列,它将显示上次创建 DDL 的时间

至于创建对象的用户,我不确定它是否被跟踪,除非你有一个记录此信息的登录触发器,我相信

CREATED

timestamp for the creation of the object

在 USER_OBJECTS/ALL_OBJECTS/DBA_OBJECTS 而不是最后修改日期 LAST_DDL_TIME.

要获取触发器所有者,您需要使用 ALL_TRIGGERS/DBA_TRIGGERS 中的 OWNER 列,因为 USER_TRIGGERS 仅显示您的 自己的 触发器而没有任何 OWNER列。

根据 oracle documentationUSER_OBJECTS 的字段描述为:

  • CREATED: 创建对象的时间戳
  • LAST_DDL_TIME:由 DDL 语句(包括授权和撤销)导致的对象的最后一次修改的时间戳

让我们做一个练习:

正在检查触发器 USER_OBJECTS table TRG_T

SQL> SELECT OBJECT_NAME,
  2         OBJECT_TYPE,
  3         CREATED,
  4         LAST_DDL_TIME
  5    FROM USER_OBJECTS
  6   WHERE OBJECT_NAME = 'TRG_T';

no rows selected

现在,让我们创建触发器TRG_T

SQL> CREATE OR REPLACE TRIGGER TRG_T BEFORE
  2  INSERT ON T
  3  FOR EACH ROW
  4  BEGIN
  5  NULL;
  6  END;
  7  /

Trigger created.

我们来看看 USER_OBJECTS

SQL> SELECT OBJECT_NAME,
  2         OBJECT_TYPE,
  3         CREATED,
  4         LAST_DDL_TIME
  5    FROM USER_OBJECTS
  6   WHERE OBJECT_NAME = 'TRG_T';

OBJECT_NAME     OBJECT_TYPE     CREATED              LAST_DDL_TIME
--------------- --------------- -------------------- --------------------
TRG_T           TRIGGER         02-jul-2020 12:41:29 02-jul-2020 12:41:29

目前,CREATEDLAST_DDL_TIME 是相同的,因为对触发器的最后一个 DDL 操作是在我们创建它的时候。

让我们修改触发器:

SQL> CREATE OR REPLACE TRIGGER TRG_T BEFORE
  2  INSERT ON T
  3  FOR EACH ROW
  4  BEGIN
  5  NULL; -- do some changes
  6  NULL; -- CHANGED THIS
  7  END;
  8  /

Trigger created.

现在,让我们再次检查 USER_OBJECTS:

SQL> SELECT OBJECT_NAME,
  2         OBJECT_TYPE,
  3         CREATED,
  4         LAST_DDL_TIME
  5    FROM USER_OBJECTS
  6   WHERE OBJECT_NAME = 'TRG_T';

OBJECT_NAME     OBJECT_TYPE     CREATED              LAST_DDL_TIME
--------------- --------------- -------------------- --------------------
TRG_T           TRIGGER         02-jul-2020 12:41:29 02-jul-2020 12:42:05

这里看到CREATEDLAST_DDL_TIME不一样