レコードが従業員テーブル (新しい従業員) に挿入されると、トリガーが起動し、レコードを employee_dept_history テーブルに「N/A」として挿入するトリガーを作成しようとしています (この従業員は新しい従業員であるため)前科なし)。また、現在の従業員が部門を変更した場合、トリガーは employee_dept_history テーブルにレコードを挿入し、従業員の depatment_id が変更されます。このトリガーの作成に問題があります。誰かが私のコードを正しい方向に導くことができるかどうか疑問に思っていました。以下のトリガーで「N/A」を表示できません。このトリガーを機能させるにはどうすればよいですか? 新しい部門と古い部門のローカル変数を作成する必要がありますか?
CREATE OR REPLACE TRIGGER employee_dept_trigger
BEFORE INSERT OR UPDATE ON employee
FOR EACH ROW
BEGIN
INSERT INTO employee_dept_history
VALUES(:NEW.employee_id,
:NEW.employee_name,
from_department_name (NEEDS TO OUTPUT 'N/A'),
to_department_name,
sysdate);
END employee_dept_trigger;
EMPLOYEE_DEPT_HISTORY テーブルは次のようになります。
CREATE TABLE empployee_dept_history
(
EMPLOYEE_ID NUMBER(4)
EMPLOYEE_NAME VARCHAR2(50)
FROM_DEPARTMENT_NAME VARCHAR2(50)
TO_DEPARTMENT_NAME VARCHAR2(50)
OPERATION_TIME DATE
);
EMPLOYEE テーブル:
(
EMPLOYEE_ID NUMBER(4)
EMPLOYEE_NAME VARCHAR2(20)
JOB VARCHAR2(50)
MANAGER_ID NUMBER(4)
HIRE_DATE DATE
SALARY NUMBER(9)
COMMISION NUMBER(9)
DEPARTMENT_ID NUMBER(4)
);