Создание триггера для запуска только при создании новой таблицы - PullRequest
7 голосов
/ 27 января 2011

Я знаю, что могу использовать это для создания триггера создания DDL;

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

Проблема в том, что этот триггер будет работать на DDL, таких как «Создать последовательность»;Как я могу выполнить это только для DDL «Создать таблицу»?

1 Ответ

15 голосов
/ 27 января 2011
CREATE OR REPLACE TRIGGER 
  create_table_trigger
  AFTER CREATE ON SCHEMA
BEGIN
  IF SYS.DICTIONARY_OBJ_TYPE = 'TABLE' THEN
      ....
END;

Список атрибутов СОБЫТИЯ см. На этой странице
http://ist.marshall.edu/ist480adbp/plsql_triggers.html (ссылка не работает)

Путь обратного вызова машины к содержанию недействительной ссылки выше: https://web.archive.org/web/20110809071133/http://ist.marshall.edu/ist480adbp/plsql_triggers.html

Насколько я знаю, dictionary_obj_type является одним из TABLE | SEQUENCE | PROCEDURE | INDEX | FUNCTION | TYPE | PACKAGE

И dictionary_obj_name это просто имя таблицы / sequence / proc/etc.

  • dictionary_obj_type Возвращает тип объекта словаря, для которого произошла операция DDL, которая запустила триггер.
  • dictionary_obj_name Возвращает имя объекта словаря, для которого произошла операция DDL, которая запустила триггер.
...