create or replace trigger create_info 
   after create on database  -- 如果记录某用户则用:after create on user1.scheme 
begin 
    insert into create_log
                (session_id,
                create_time,
                ip_address,
                terminal,
                object_owner,
                object_name,
                object_type,
                drop_by_user)
        values(USERENV('SESSIONID'),
                sysdate,
                SYS_CONTEXT('USERENV','IP_ADDRESS'),
                SYS_CONTEXT('USERENV','TERMINAL'),
                sys.dictionary_obj_owner,
                sys.dictionary_obj_name,
                sys.dictionary_obj_type,
                sys.login_user);    
end;
/不过这个只能记录创建对象的名字,你可以考虑当object_type='TABLE'时从cols中取出列名放进来

解决方案 »

  1.   

    create or replace trigger create_info 
    before create on username.schema  -- 在username用戶上創建審計create的觸發器
    begin 
    if sys.dictionary_obj_type='TABLE' then
        insert into create_log
         (session_id,
         drop_time,
         ip_address,
         object_owner,
         object_name,
         object_type,
         drop_by_user)
         values(USERENV('SESSIONID'),
         sysdate,
         SYS_CONTEXT('USERENV','IP_ADDRESS'),
         sys.dictionary_obj_owner,
         sys.dictionary_obj_name,
         sys.dictionary_obj_type,
         sys.login_user);  
    end if;  
    end;
      

  2.   

    我理解你的问题是:创建一个表,并在表里自动带有另外一个表里的结构和数据
    sql>create table b as select c1,c2,c3 from a;

    sql>create table b as select * from a; 然后删除不必要的列。
      

  3.   

    那倒不是,我得意思是这个MIS系统允许用户自己创建表,并定义表里的列!而数据库中所有的表的列定义都在另外一个表里存放,这个表相对固定!只有在用户创建表并定义列的时候才变动! 我小改了一下上边的代码,可以了