有没有办法得到触发器的创建日期(时间)?我尝试了以下查询:
select CREATED from user_objects where object_name = '&MY_TRIGGER_NAME'
但我想,我得到的是最后一次修改/运行日期,而不是创建时间。而且,我想得到创建触发器的用户…如果可能的话。
gr8qqesn1#
根据oracle文档 USER_OBJECTS 描述如下: CREATED :创建对象的时间戳 LAST_DDL_TIME :由ddl语句(包括授权和撤销)导致的对象最后一次修改的时间戳让我们做一个练习:办理登机手续 USER_OBJECTS 触发器表 TRG_T ```SQL> SELECT OBJECT_NAME,2 OBJECT_TYPE,3 CREATED,4 LAST_DDL_TIME5 FROM USER_OBJECTS6 WHERE OBJECT_NAME = 'TRG_T';
USER_OBJECTS
CREATED
LAST_DDL_TIME
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_TIME5 FROM USER_OBJECTS6 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
目前, `CREATED` 以及 `LAST_DDL_TIME` 是相同的,因为触发器上的最后一个ddl操作是在我们创建它时进行的。 让我们修改触发器:
SQL> CREATE OR REPLACE TRIGGER TRG_T BEFORE2 INSERT ON T3 FOR EACH ROW4 BEGIN5 NULL; -- do some changes6 NULL; -- CHANGED THIS7 END;8 /
Trigger created.
现在,让我们再次检查一下 `USER_OBJECTS` :
SQL> SELECT OBJECT_NAME,2 OBJECT_TYPE,3 CREATED,4 LAST_DDL_TIME5 FROM USER_OBJECTS6 WHERE OBJECT_NAME = 'TRG_T';
TRG_T TRIGGER 02-jul-2020 12:41:29 02-jul-2020 12:42:05
看到了吗 `CREATED` 以及 `LAST_DDL_TIME` 这里不一样
t3psigkw2#
在user\u objects视图中有一个名为“created”的字段,它告诉对象的创建时间。还有一个名为last_ddl_time的列,它将显示上次创建ddl的时间至于创建这个对象的用户,我不确定它是否被跟踪,除非你有一个登录触发器来记录这个信息
js81xvg63#
CREATED 是创建对象的时间戳在user\u objects/all\u objects/dba\u objects中,而不是上次修改的日期 LAST_DDL_TIME .要获得触发器所有者,您需要使用 OWNER 列,因为user\u triggers只显示您自己的触发器,而不显示任何所有者列。
OWNER
3条答案
按热度按时间gr8qqesn1#
根据oracle文档
USER_OBJECTS
描述如下:CREATED
:创建对象的时间戳LAST_DDL_TIME
:由ddl语句(包括授权和撤销)导致的对象最后一次修改的时间戳让我们做一个练习:
办理登机手续
USER_OBJECTS
触发器表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
我们去登记一下
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
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.
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
t3psigkw2#
在user\u objects视图中有一个名为“created”的字段,它告诉对象的创建时间。还有一个名为last_ddl_time的列,它将显示上次创建ddl的时间
至于创建这个对象的用户,我不确定它是否被跟踪,除非你有一个登录触发器来记录这个信息
js81xvg63#
CREATED
是创建对象的时间戳
在user\u objects/all\u objects/dba\u objects中,而不是上次修改的日期
LAST_DDL_TIME
.要获得触发器所有者,您需要使用
OWNER
列,因为user\u triggers只显示您自己的触发器,而不显示任何所有者列。