Oracle:每当我更新员工的状态时,都会创建一个新表

时间:2016-07-28 13:38:25

标签: sql oracle plsql oracle11g

我有下表,每当我将员工的状态更新为"确认时,我想创建一个新表。"新表必须包含具有该特定员工数据的所有列。

 SQL> select * from employee;

 EMPID EMPNAME                          SAL DOJ       STATUS
 ----- ------------------------- ---------- --------- --------------------
   101 ALEX                           10000 12-MAY-16 not_confirmed
   102 PETER                          20000 12-MAY-16 not_confirmed

1 个答案:

答案 0 :(得分:2)

为员工创建一个具有相同表员工结构的新表,例如employee_history。

在更新后创建触发器以在历史记录表中插入旧值 代码可以是:

CREATE OR REPLACE TRIGGER employee_after_update
AFTER UPDATE ON employee
FOR EACH ROW
BEGIN
 IF( UPDATING( 'STATUS' ) )
 THEN
   INSERT INTO employee_history( EMPID, EMPNAME, SAL , DOJ,STATUS)
     VALUES( :old.EMPID, :old.EMPNAME , :old.SAL , :old.DOJ ,  :old.STATUS);
 END IF;  

END;

您可以添加额外的跟踪字段(如果需要),例如update_date,user_id(谁做更改,...)