插入更新触发器PL / SQL后

时间:2012-05-21 04:38:35

标签: plsql triggers oracle11g

我的表格为Studentvarchar类型列为status。我需要在此表上为此statusafter insert or update进程设置值。我试图为此写一个Trigger。但我不能用:new.status。它给出了Error: ORA-04084: cannot change NEW values for this trigger type。我怎么能这样做?

我的代码

create or replace
TRIGGER STUDENT_AIU_TRI 
AFTER INSERT OR UPDATE ON STUDENT
FOR EACH ROW 
DECLARE

v_status VARCHAR2(2);

BEGIN


  v_status := '1';

  select v_status into :NEW.status from dual;
END;

1 个答案:

答案 0 :(得分:7)

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

您也不需要本地变量或来自双

SELECT
CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT OR UPDATE ON student
  FOR EACH ROW
BEGIN
  :new.status := '1';
END;