如何获取触发器中要执行ddl操作的表名

k20*_*ari 2 security oracle plsql

我想做类似的事情

create or replace trigger t1 before ddl on database
begin
insert into table1 values(//the table name on which the ddl will be performed);
end;

Run Code Online (Sandbox Code Playgroud)

所以如果我创建一个名为“Hello”的表,那么“Hello”(表名)将被插入到 table1 中

所以我不知道如何实际获取表名

tha*_*ith 5

这在数据库文档中显示

所以你可以做类似的事情...

CREATE OR REPLACE TRIGGER ddl_trig
AFTER DDL
ON DATABASE
BEGIN
  INSERT INTO loguser.ddl_log
  (user_name, ddl_date, ddl_type,
   object_type, owner,
   object_name)
  VALUES
  (ora_login_user, SYSDATE, ora_sysevent,
   ora_dict_obj_type, ora_dict_obj_owner,
   ora_dict_obj_name);
END ddl_trig;
/
Run Code Online (Sandbox Code Playgroud)

但是,您不应该构建自己的审核软件/代码。您应该使用数据库的内置审核系统。

看到这个。

免责声明:我在 Oracle 工作,是数据库团队的产品经理。