2

我有一个表 asStudent并且有一个varchar类型列 as 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;
4

1 回答 1

7

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

您也不需要局部变量或 to SELECTfrom dual

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT OR UPDATE ON student
  FOR EACH ROW
BEGIN
  :new.status := '1';
END;
于 2012-05-21T05:13:20.973 回答