2011-01-27 12 views
6

Tôi biết rằng tôi có thể sử dụng điều này để tạo trình kích hoạt tạo DDL;Tạo trình kích hoạt để chỉ chạy khi một bảng mới đang được tạo

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

Sự cố là trình kích hoạt này sẽ chạy trên DDL như 'Tạo chuỗi'; làm thế nào tôi có thể thực hiện điều này cho DDLs 'Tạo Bảng'?

+0

Tạo một bảng có âm thanh như thiết kế cơ sở dữ liệu có vấn đề cao. –

+1

@OMG có thể, nhưng chắc chắn là lúc tạo bảng là một thiết kế tốt. – jzd

+0

@jzd: Bạn có ví dụ? –

Trả lời

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

Đối với một danh sách các EVENT thuộc tính, hãy tham khảo trang
http://ist.marshall.edu/ist480adbp/plsql_triggers.html (liên kết là xuống)

này Theo như tôi biết, dictionary_obj_type là một trong những TABLE | SEQUENCE | THỦ TỤC | INDEX | CHỨC NĂNG | TYPE | PACKAGE

Và dictionary_obj_name chỉ là tên của bảng/chuỗi/proc/v.v.

  • dictionary_obj_type Trả về loại của đối tượng từ điển mà trên đó các hoạt động DDL mà bắn cò xảy ra.
  • dictionary_obj_name Trả về tên của đối tượng từ điển mà hoạt động DDL kích hoạt trình kích hoạt đã xảy ra.
+0

Booya .. Cảm ơn bạn –

+0

Ồ, tôi có thể lấy tên Bảng đang được tạo ra như thế nào? –

+0

Tôi đã cập nhật câu trả lời bằng một liên kết – RichardTheKiwi