【发布时间】:2021-04-05 08:33:37
【问题描述】:
为了更清楚 我想创建一个触发器,每次在我的架构中创建新索引时触发 然后将该索引名称保存在单独的表中,我们称之为 index_log。
在index_log表中,有一个creation_time列,告诉了该索引的创建时间
【问题讨论】:
为了更清楚 我想创建一个触发器,每次在我的架构中创建新索引时触发 然后将该索引名称保存在单独的表中,我们称之为 index_log。
在index_log表中,有一个creation_time列,告诉了该索引的创建时间
【问题讨论】:
如果您只需要获取索引名称和创建时间,那么您不需要任何触发器,如@Littlefoot 所示。
否则你可以创建一个DDL-Trigger:
CREATE OR REPLACE TRIGGER audit_index
AFTER CREATE ON hr.SCHEMA
WHEN (ora_dict_obj_type = 'INDEX')
BEGIN
DBMS_OUTPUT.PUT_LINE('Index Name: ' || ora_dict_obj_name);
END;
/
您应该查看Triggers for Publishing Events 以从触发事件中获取所需信息。
【讨论】:
重新发明轮子,是吗?该信息存储在USER_OBJECTS,建议您使用。
信息:
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
28.12.2020 16:20:11
表:
SQL> create table test (id number);
Table created.
索引:
SQL> create index i1t on test (id);
Index created.
它是什么时候创建的?
SQL> select created from user_objects where object_name = 'I1T';
CREATED
-------------------
28.12.2020 16:20:20
SQL>
【讨论】: