我的表格为Student
,varchar
类型列为status
。我需要在此表上为此status
列after 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;
答案 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;