2

としてのテーブルがStudentあり、 としてのvarcharタイプ列がありますstatusstatusこのテーブルのこの列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;
4

1 に答える 1

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;
于 2012-05-21T05:13:20.973 に答える