Sql 缺少BEFORE、AFTER或代替关键字
在oracle数据库中,我遇到了一个缺少BEFORE、AFTER或INSTEAD关键字错误的小问题,但我不知道我的错误是什么 我已经在这里和其他网站上查看了一些答案,但无法找出我在触发器声明中做错了什么 此触发器的目的是记录数据库航班表中所做的所有更改(插入更新删除),并将更改后的值记录到Sql 缺少BEFORE、AFTER或代替关键字,sql,plsql,compiler-errors,Sql,Plsql,Compiler Errors,在oracle数据库中,我遇到了一个缺少BEFORE、AFTER或INSTEAD关键字错误的小问题,但我不知道我的错误是什么 我已经在这里和其他网站上查看了一些答案,但无法找出我在触发器声明中做错了什么 此触发器的目的是记录数据库航班表中所做的所有更改(插入更新删除),并将更改后的值记录到记录表中,到目前为止,我在到达IF之前取出了所有其他部分,因为它会抛出错误 它告诉我错误:ORA-04071:在关键字之前、之后或替换关键字之前缺失 编辑的代码在注释中设置: 删除declare嘿,我刚刚将其更
记录表中
,到目前为止,我在到达IF
之前取出了所有其他部分,因为它会抛出错误
它告诉我错误:ORA-04071:在关键字之前、之后或替换关键字之前缺失
编辑的代码在注释中设置:
删除
declare
嘿,我刚刚将其更改为as
,但仍然出现相同的错误消息:/只有一个错误,您在下面的语句中遗漏了触发器名称:create或replace trigger\u name触发器名称缺失。哦,该死的:0根本没有注意到!谢谢:)好的,谢谢!现在它几乎可以工作了,现在我必须在里面解决我的错误。显然,我无法绑定我的:new.v_type
和:new.systimestamp
。我甚至需要在这一点上添加一个变量吗?-因为在我看来这是一个很大的错误,因为我已经提到这是一个插入类型更改
。是否有可能将该字符串绑定到变量中?此外,如何将新的systimestamp
放入触发器内的我的表中?删除declare
嘿,我刚刚将其更改为as
,但它仍然会出现相同的错误消息:/只有一个错误,您在下面的语句中遗漏了触发器名称:create或replace trigger\u name触发器名称遗漏。噢,该死的:0根本没有注意到!谢谢:)好的,谢谢!现在它几乎可以工作了,现在我必须在里面解决我的错误。显然,我无法绑定我的:new.v_type
和:new.systimestamp
。我甚至需要在这一点上添加一个变量吗?-因为在我看来这是一个很大的错误,因为我已经提到这是一个插入类型更改
。是否有可能将该字符串绑定到变量中?此外,如何将新的systimestamp
放入触发器内的表中?
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;
/