如何写一个触发器记录对于profile的创建,修改,删除呢?还有一个触发器记录将profile赋予某个user的信息。
和profile相关的表dba_profile,可以开启audit,不过还是没有想到如何来记录为好。请各位高手帮忙,给个思路也好~~触发器好像都是对普通表,dba_profiles是系统表,无法创建触发器。
开启审计audit profile倒是能够记录对profile的操作,但是将一个profile付给一个user时,怎么记录呢?开启audit alter user?能够将这些信息记录在创建的一个表中呢?

解决方案 »

  1.   

    create trigger test
    before insert or update or delete
    referencing new as new_value
    old as old_value
    for each
    if insrting then
      insert into table (num1,num2) values (:new_value.num1,:new_value.num2);
    elsif updating then
      insert into table (num1,num2) values('Old Message:'||:old_value.num1||'.New Message:'||:new_value.num1,'Old Message:'||:old_value.num2||'.New Message:'||:new_value.num2);
    elsif deleting then
    insert into table (num1,num2) values('Old Message:'||:old_value.num1||'.New Message:'||:new_value.num1,'Old Message:'||:old_value.num2||'.New Message:'||:new_value.num2);
    end if;
    这个就是一个简单的对表的增删改的触发器。希望可以答到你的要求。
      

  2.   

    create trigger test
    before insert or update or delete on table1
    referencing new as new_value
    old as old_value
    for each row
    begin
    if insrting then
      insert into table (num1,num2) values (:new_value.num1,:new_value.num2);
    elsif updating then
      insert into table (num1,num2) values('Old Message:'||:old_value.num1||'.New Message:'||:new_value.num1,'Old Message:'||:old_value.num2||'.New Message:'||:new_value.num2);
    elsif deleting then
    insert into table (num1,num2) values('Old Message:'||:old_value.num1||'.New Message:'||:new_value.num1,'Old Message:'||:old_value.num2||'.New Message:'||:new_value.num2);
    end if;
    end;
    不好意思,,上面那个写错了。现在才是对的。
      

  3.   

    谢谢楼上的,不过如何能够记录profile的改动呢?应该在哪个表上建立触发器呢?