2016-03-07 5 views
1

У меня есть три пользователя для моей базы данных с несколькими привилегиями. Я хочу вести учет действий каждого пользователя. Как я могу отслеживать, какие операции были выполнены пользователями?Отслеживание операций, выполняемых пользователями базы данных

+0

1. Oracle и mysql - это два разных продукта. Pls удаляет один из них из ваших тегов. 2. У вас 3 пользователя, являются ли они пользователями уровня базы данных (3 учетных записей в db) или пользователями уровня приложения (1 учетная запись в db)? – Shadow

+0

базовый уровень доступа к базе данных –

ответ

0

первый ящик следующая таблица для таблицы отделов содержит dno, dname, loc.

create table dept_log 
(
    userCode number(5), 
    userEvent varchar2(10), 
    edate date, 
    odno number(7), 
    odname varchar2(10), 
    oloc varchar2(10), 
    ndno number(7), 
    ndname varchar2(10), 
    nloc varchar2(10) 
) 

Теперь создайте триггерный огонь после вставки, обновления и удаления.

create trigger tri_keep_track_on_operation 
after insert or delete or update 
on dept 
for each row 
begin 

    if inserting then 
     insert into dept_log values(usercode,'insert',sysdate,null,null,null,:new.deptno,:new.dname,:new.loc); 
     dbms_output.put_line(' AFTER INSERT '); 

    elsif deleting then 
     insert into dept_log values(usercode,'delete',sysdate,:old.deptno,:old.dname,:old.loc,null,null,null); 
     dbms_output.put_line(' AFTER DELETE '); 
    elsif updating then 
     insert into dept_log values(usercode,'update',sysdate,:old.deptno,:old.dname,:old.loc,:new.deptno,:new.dname,:new.loc); 
     dbms_output.put_line(' AFTER UPDATE '); 
    end if; 

end; 
/

Я надеюсь вам помочь.