【问题标题】:Error while creating a trigger创建触发器时出错
【发布时间】:2014-01-31 12:44:41
【问题描述】:

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

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;
/

【问题讨论】:

    标签: oracle triggers oracle10g


    【解决方案1】:

    如果要更改列中的值,则需要使用 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

    【讨论】:

      猜你喜欢
      • 2017-02-09
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多