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

​The table gets created, but it gives me an error for the trigger on line 4,where the begin statement is. Ther error is error at line 4 statement ignored. The synthax seems ok and I'm confident it's a small error but I can't figure it out. I am using Oracle.

Thanks in advance.

4

2 回答 2

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.
于 2013-05-05T16:39:02.640 回答
1

我不是 Oracle 专家,但您要么需要删除您的 DECLARE 行,要么根据此示例实际声明一些内容

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;
于 2013-05-05T14:27:23.450 回答