2011-01-27 76 views
6

我知道我可以使用它創建DDL創建觸發器;創建觸發器只在創建新表時運行

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

問題是這個觸發器會在DDLs上運行,如'Create sequence';我怎麼才能執行這個'創建表'DDLs?

+0

創建表格聽起來像是一個非常值得懷疑的數據庫設計。 – 2011-01-27 03:26:48

+1

@OMG可能,但是肯定有時候創建表是一個很好的設計。 – jzd 2011-01-27 03:37:55

回答

13
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(鏈路斷開)

據我所知,dictionary_obj_type是 表的一個| SEQUENCE |程序|首頁|功能| TYPE | PACKAGE

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

  • dictionary_obj_type返回發生觸發觸發器的DDL操作字典對象的類型。
  • dictionary_obj_name返回發生觸發觸發器的DDL操作的字典對象的名稱。