这里记录满足一定条件的操作,并将操作记录下来。
创建记录日志表
create table emp_trace_log(
empno number, -- 主键
column_name varchar2(20), -- 被修改列名
old_value varchar2(200), -- 修改前旧值
new_value varchar2(200), -- 修改后新值
update_date date default sysdate -- 修改时间,默认系统当前时间
);
创建触发器
create or replace trigger tr_up_ck
-- 删除或修改操作前
before delete or update on scott.emp
FOR EACH ROW --说明创建的是行级触发器
-- 触发条件,comm列值非空时
when (old.comm is not null)
BEGIN
case
-- 修改列数据
when updating('ename') then
if :old.ename <> :new.ename then
insert into emp_trace_log
(empno, column_name, old_value, new_value)
values
(:old.empno, 'ENAME', :old.ename, :new.ename);
end if;
when updating('job') then
if :old.job <> :new.job then
insert into emp_trace_log