错过BEFORE,AFTER或INSTEAD OF关键字

时间:2017-04-29 10:14:30

标签: sql plsql compiler-errors

我在oracle数据库中缺少BEFORE,AFTER或INSTEAD OF关键字错误时遇到了一些问题,但我无法弄清楚我的错误是什么。

我已经在这里和其他网站上检查了几个答案,但无法弄清楚我在触发器声明中做错了什么。

此触发器的目的是记录在数据库的航班表中完成的所有更改(插入更新删除),并将更改的值记录到logging_table,到目前为止,我已取出所有其他部分,因为它在我到达IF之前抛出错误方式。

它告诉我错误:ORA-04071:错过BEFORE,AFTER或INSTEAD OF关键字

已编辑的代码在 评论

中设置
  create table logging_table (
    changeType varchar2(20),  
    changeTime timestamp, 
    changeUser varchar2(20),
    changeStatement varchar2(200));

create table flug2412 as select * from flug;

create or replace trigger change_flights
BEFORE insert /*or update or delete */ on flug2412 for each row
declare

  v_type varchar2(20);
  v_time timestamp;
  v_user varchar2(20); /*v_user varchar2(30) := user;*/
  v_statement varchar2(200);

begin 
  IF INSERTING THEN 
    v_type := 'I'; /*v_type := 'Insert';*/
    v_time := timestamp; 
    /* Select user into v_user from dual;*/ 
    v_statement := to_char('Insert'|| /*:new.v_type*/ 
                          || ', FlugzeugID: ' || :new.flugzeugid 
                          || ', GateID: ' || :new.gateid 
                          || ', Abflughafen: ' || :new.flughafen_abflug
                          || ', Destinations Flughafen: ' || :new.flughafen_destination
                          || ', Abflugzeit: ' || :new.systimestamp /*:new.abflugzeit*/
                          || ', Flugnummer: ' || :new.flugnummer
                          || ', Flugdauer: ' || :new.dauer);
    insert into logging_table(v_type, v_time, v_user, v_statement);  
  END IF; 
end;
/

0 个答案:

没有答案