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

时间:2011-01-27 03:23:43

标签: sql database oracle triggers ddl

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

CREATE OR REPLACE TRIGGER 
  create_table_trigger
  AFTER CREATE ON SCHEMA
DECLARE
BEGIN
END;

问题是这个触发器会在“创建序列”等DDL上运行;我怎样才能为“创建表”DDL执行此操作?

1 个答案:

答案 0 :(得分:15)

CREATE OR REPLACE TRIGGER 
  create_table_trigger
  AFTER CREATE ON SCHEMA
BEGIN
  IF SYS.DICTIONARY_OBJ_TYPE = 'TABLE' THEN
      ....
END;

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

Wayback机器链接到上面死链接的内容: https://web.archive.org/web/20110809071133/http://ist.marshall.edu/ist480adbp/plsql_triggers.html

据我所知,dictionary_obj_type是其中之一 TABLE | SEQUENCE | PROCEDURE | INDEX | FUNCTION |类型|封装

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

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