创建触发器时出错

时间:2014-01-31 12:44:41

标签: oracle triggers oracle10g

以下触发器将为每个特定列的插入更新表中其他列的值,但不知何故我收到以下错误。

  

ORA-04084:无法更改此触发类型的新值

即使更新语句似乎在触发器体中也不起作用;

create or replace trigger encode_trigger 
after insert on vulnerable_tags
for each row
declare 
  var1 varchar2(20);
  var2 varchar2(40);
begin
  var1 := :OLD.tag_name;
  var2 := Encode12(var1);
  :NEW.ascii_tags := var2;
end;
/

1 个答案:

答案 0 :(得分:2)

如果您想更改列中的值,则需要使用BEFORE INSER OR UPDATET触发器,而不是AFTER INSERT OR UPDATE触发器。

create or replace trigger encode_trigger 
before insert on vulnerable_tags
for each row
declare 
var1 varchar2(20);
var2 varchar2(40);
begin
var1:= :OLD.tag_name;
var2:=Encode12(var1);
:NEW.ascii_tags:=var2;
end

出于特定原因,您需要after吗?