새 행을 추가하면 한 열 ("notubes")을 같은 테이블의 다른 열 ("notubesleft")에 복사하는 트리거를 만들려고합니다. . 제대로 컴파일하지만 새 행을 삽입 할 때이 오류가 발생합니다SQL 트리거가 올바르게 컴파일되지만 오류가 발생합니다.
내 트리거는 다음과 같습니다
create or replace TRIGGER NOTUBESLEFT_INSERT_TRIGGER
AFTER INSERT ON SAMPLES FOR EACH ROW BEGIN
update samples
set notubesleft = (select notubes from samples where sampleid = :new.sampleid);
END;
내가 오류 얻을 새 행을 커밋 할 때 :
One error saving changes to table "APEX_WS_PROMETHEUS"."SAMPLES":
Row 10: ORA-04091: table APEX_WS_PROMETHEUS.SAMPLES is mutating, trigger/function may not see it
ORA-06512: at "APEX_WS_PROMETHEUS.NOTUBESLEFT_INSERT_TRIGGER", line 2 ORA-04088: error during execution of trigger 'APEX_WS_PROMETHEUS.NOTUBESLEFT_INSERT_TRIGGER'
ORA-06512: at line 1
을 나는 새로운 질문을하고있다. 왜냐하면 내가 트리거의 PL/SQL 코드를 구조화하는 방법에 대한 해결책을 찾을 수 있었기 때문입니다. 그러나 그것이 작동하지 않는 이유를 알 수는 없습니다.
감사합니다.
왜 삽입 후 트리거로이 작업을 수행하려고합니까? –
왜냐하면 먼저 테이블에 값을 삽입해야만 다른 값을 채우기 전에 값을 삽입해야한다고 생각했기 때문입니다. 그것은 첫 번째 방아쇠입니다. – Matte