Oracle数据库表中的更改检测捕获
我想知道是否有可能检测到Oracle DB表中每个列及其值的更改,并捕获更改是否是一个单独的临时表?是;人们通常使用触发器来实现这一点 下面是一个简单的例子:Oracle数据库表中的更改检测捕获,oracle,Oracle,我想知道是否有可能检测到Oracle DB表中每个列及其值的更改,并捕获更改是否是一个单独的临时表?是;人们通常使用触发器来实现这一点 下面是一个简单的例子: SQL> create table dept_log 2 (deptno number, 3 dname varchar2(20), 4 loc varchar2(20), 5 when date 6 ); Table created. SQL> SQL&
SQL> create table dept_log
2 (deptno number,
3 dname varchar2(20),
4 loc varchar2(20),
5 when date
6 );
Table created.
SQL>
SQL> create or replace trigger trg_bu_dept
2 before update on dept
3 for each row
4 begin
5 if :new.dname <> :old.dname or
6 :new.loc <> :old.loc
7 then
8 insert into dept_log (deptno, dname, loc, when)
9 values (:new.deptno, :old.dname, :old.loc, sysdate);
10 end if;
11 end;
12 /
Trigger created.
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> update dept set loc = 'LONDON' where deptno = 40;
1 row updated.
SQL> select * From dept_log;
DEPTNO DNAME LOC WHEN
---------- -------------------- -------------------- -------------------
40 OPERATIONS BOSTON 11.04.2018 22:00:23
SQL>
那么,工具/UI中没有我可以使用的东西了吗?好吧,在这里调查一下审计:它是内置的Oracle选项,可以让您监视数据库活动。感谢上面的示例。但是改变后的记录不是显示了波士顿而不是伦敦的旧价值观吗??