创建仅在创建新表时运行的触发器

Tol*_*a E 7 sql database oracle ddl triggers

我知道我可以用它来创建DDL创建触发器;

CREATE OR REPLACE TRIGGER 
  create_table_trigger
  AFTER CREATE ON SCHEMA
DECLARE
BEGIN
END;
Run Code Online (Sandbox Code Playgroud)

问题是这个触发器会在"创建序列"之类的DDL上运行; 我怎样才能为'创建表'DDL执行此操作?

Ric*_*iwi 15

CREATE OR REPLACE TRIGGER 
  create_table_trigger
  AFTER CREATE ON SCHEMA
BEGIN
  IF SYS.DICTIONARY_OBJ_TYPE = 'TABLE' THEN
      ....
END;
Run Code Online (Sandbox Code Playgroud)

有关EVENT属性的列表,请参阅此页面
http://ist.marshall.edu/ist480adbp/plsql_triggers.html(链接已关闭)

据我所知,dictionary_obj_type是TABLE | SEQUENCE | PROCEDURE | INDEX | FUNCTION | TYPE | PACKAGE之一

而dictionary_obj_name只是表/序列/ proc/etc的名称.

  • dictionary_obj_type返回触发触发器的DDL操作发生的字典对象的类型.
  • dictionary_obj_name返回触发触发器的DDL操作发生的字典对象的名称.