jn table
CREATE TABLE employees_jn ( id NUMBER(6,0) , jn_type VARCHAR2(1 BYTE), employee_id NUMBER(6,0) , first_name VARCHAR2(20 BYTE), last_name VARCHAR2(25 BYTE) , email VARCHAR2(25 BYTE) , phone_number VARCHAR2(20 BYTE), hire_date DATE , job_id VARCHAR2(10 BYTE) , job_title VARCHAR2(100 BYTE) , old_salary NUMBER(8,2), new_salary NUMBER(8,2), commission_pct NUMBER(2,2), manager_id NUMBER(6,0), manager_name VARCHAR2(100 BYTE), department_id NUMBER(4,0), department_name VARCHAR2(100 BYTE), valid_from date, valid_to date )
Trigger
DECLARE v_jn_type VARCHAR2 (1); BEGIN v_jn_type := CASE WHEN INSERTING THEN 'I' WHEN UPDATING THEN 'U' ELSE 'D' END; INSERT INTO employees_jn (id, jn_type, employee_id, first_name, last_name, email, phone_number, hire_date, job_id, job_title, old_salary, new_salary, commission_pct, manager_id, manager_name, department_id, department_name, valid_from, valid_to) VALUES (hr_seq.NEXTVAL, v_jn_type, NVL (:new.employee_id, :old.employee_id), NVL (:new.first_name, :old.first_name), NVL (:new.last_name, :old.last_name), NVL (:new.email, :old.email), NVL (:new.phone_number, :old.phone_number), NVL (:new.hire_date, :old.hire_date), NVL (:new.job_id, :old.job_id), (SELECT job_title FROM jobs WHERE job_id = NVL (:new.job_id, :old.job_id)), :old.salary, :new.salary, NVL (:new.commission_pct, :old.commission_pct), NVL (:new.manager_id, :old.manager_id), (SELECT first_name || ' ' || last_name FROM employees WHERE employee_id = NVL (:new.manager_id, :old.manager_id)), NVL (:new.department_id, :old.department_id), (SELECT department_name FROM departments WHERE department_id = NVL (:new.department_id, :old.department_id)), NVL (:new.hire_date, :old.hire_date), SYSDATE); END;