我有下表,每当我将员工的状态更新为"确认时,我想创建一个新表。"新表必须包含具有该特定员工数据的所有列。
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
答案 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(谁做更改,...)