2013-05-05 196 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行上的觸發器提供了一個錯誤,其中begin語句是。在第4行語句被忽略時,Ther錯誤是錯誤的。合成器似乎沒問題,我相信這是一個小錯誤,但我無法弄清楚。我正在使用Oracle。插入觸發器更新後

在此先感謝。

+0

說法忽略不是一個錯誤,這是錯誤的結果。 – Sebas 2013-05-05 14:27:00

回答

3

運行觸發的東西,你擁有了它,其實我得到一個內部的Oracle錯誤,這是不好的。但我認爲問題出在: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'之間的空格時,它會消失。 – 2013-05-05 20:02:17

1

我不是一個Oracle專家,但你要麼需要取得您的DECLARE線或實際聲明在此基礎上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命令中工作的。不管怎麼說,還是要謝謝你。 – 2013-05-05 16:32:16