|
Re: Saving a record in a table before saving an updated version [message #581441 is a reply to message #581416] |
Sat, 06 April 2013 14:47 |
|
Littlefoot
Messages: 21823 Registered: June 2005 Location: Croatia, Europe
|
Senior Member Account Moderator |
|
|
The simplest way I can think of is to use a database trigger. Here's an example - I'd want to log salary changes. Therefore, I'll create a table which will contain EMPNO, old and new salary. Of course, here's the trigger as well.
SQL> create table log_sal
2 (empno number,
3 old_sal number,
4 new_sal number
5 );
Table created.
SQL> create or replace trigger trg_bu_sal
2 before update of sal on emp
3 for each row
4 begin
5 insert into log_sal
6 (empno, old_sal, new_sal)
7 values
8 (:old.empno, :old.sal, :new.sal);
9 end;
10 /
Trigger created.
Let's test it:
SQL> select empno, sal from emp where ename = 'SCOTT';
EMPNO SAL
---------- ----------
7788 3800
SQL> update emp set sal = 38 where ename = 'SCOTT';
1 row updated.
SQL> select empno, sal from emp where ename = 'SCOTT';
EMPNO SAL
---------- ----------
7788 38
SQL> select * from log_sal;
EMPNO OLD_SAL NEW_SAL
---------- ---------- ----------
7788 3800 38
SQL>
|
|
|
|
|