2013-05-05 3 views
0
CREATE TABLE "EMPLOYEE_BP" 
    ( "EMP_ID" VARCHAR2(10) NOT NULL ENABLE, 
"FNAME" VARCHAR2(20), 
"LNAME" VARCHAR2(20), 
"JOB_ROLE" VARCHAR2(20), 
"AIRPORT_CODE" VARCHAR2(10) NOT NULL ENABLE, 
"SALARY" NUMBER(9,0), 
"MOBILE" NUMBER(10,0) 
); 

CREATE or REPLACE TRIGGER emp_after_insert AFTER INSERT ON EMPLOYEE 
FOR EACH ROW 
DECLARE 
BEGIN 
INSERT INTO EMPLOYEE_BP values (:NEW.EMP_ID, :NEW.FNAME, :NEW.LNAME, :NEW.JOB_ROLE, : NEW.AIRPORT_CODE, : NEW.SALARY, : NEW.MOBILE); 
DBMS_OUTPUT.PUT_LINE('Record successfully inserted into emp_backup table'); 
END; 

--> Apparently constraints are not inserted into backup tables 

표가 생성되지만 4 행의 시작 문이있는 트리거에 오류가 발생합니다. 오류는 4 행에서 무시됩니다. synthax는 괜찮아 보이고 나는 그것이 작은 오류라고 확신하지만 그것을 이해할 수는 없다. Oracle을 사용하고 있습니다.삽입 트리거 업데이트 후

미리 감사드립니다.

+0

문은 오류가 아닙니다,이 오류의 결과이다. – Sebas

답변

3

를 기반으로 뭔가를 당신의 DECLARE 줄을 치거나 실제로 선언해야 하나 오류는 좋지 않습니다. 하지만 문제는 당신이 :NEW 사이에있는 공간에 있다고 생각합니다.

이 나를 위해 작동합니다 : 무시

SQL> CREATE or REPLACE TRIGGER emp_after_insert AFTER INSERT ON EMPLOYEE 
    2 FOR EACH ROW 
    3 DECLARE 
    4 BEGIN 
    5 INSERT INTO EMPLOYEE_BP values (:NEW.EMP_ID, :NEW.FNAME, :NEW.LNAME, :NEW.JOB_ROLE, :NEW.AIRPORT_CODE, :NEW.SALARY, :NEW.MOBILE); 
    6 DBMS_OUTPUT.PUT_LINE('Record successfully inserted into emp_backup table'); 
    7 END; 
    8/

Trigger created. 
+0

+1 : 트리거를 컴파일 할 때 PLS-00801 내부 오류가 발생합니다.이 오류는':'와'NEW' 사이의 공백을 제거하면 사라집니다. –

1

나는 오라클 전문가가 아니에요하지만 당신은 당신이 그것을 가지고, 내가 실제로 내부 오라클 얻을 트리거 실행이 example

CREATE or REPLACE TRIGGER emp_after_insert AFTER INSERT ON EMPLOYEE 
FOR EACH ROW 
DECLARE 
    unused varchar2(10); 
BEGIN 
INSERT INTO EMPLOYEE_BP values (:NEW.EMP_ID, :NEW.FNAME, :NEW.LNAME, :NEW.JOB_ROLE, :NEW.AIRPORT_CODE, :NEW.SALARY, :NEW.MOBILE); 
DBMS_OUTPUT.PUT_LINE('Record successfully inserted into emp_backup table'); 
END; 
+0

모든 것을 시도한 결과, 오라클의 무료 버전은 단지 결함이 있으며, 일부 명령문은 명령 터미널에서 작동하고 다른 명령은 SQL 명령에서 스크립트 및 기타 작업을 수행합니다. 어쨌든 고마워. –