복붙노트

[SQL] 오라클 트리거 오류 ORA-04091

SQL

오라클 트리거 오류 ORA-04091

나는 오류가 발생 : 내 트리거를 실행할 때 (ORA-04091이 테이블 DBPROJEKT_AKTIENDEPOT.AKTIE은, 트리거 / 함수가 표시되지 않을 수 변이됩니다)

CREATE OR REPLACE TRIGGER Aktien_Bilanz_Berechnung
AFTER 
INSERT OR UPDATE OF  TAGESKURS
OR INSERT OR UPDATE OF  WERT_BEIM_EINKAUF
ON AKTIE
FOR EACH ROW
DECLARE
bfr number;
Begin
bfr := :new.TAGESKURS - :new.WERT_BEIM_EINKAUF;
UPDATE AKTIE
SET BILANZ = TAGESKURS - WERT_BEIM_EINKAUF;
IF bfr < -50
THEN
DBMS_OUTPUT.PUT_LINE('ACHTUNG: The value (Nr: '||:new.AKTIEN_NR||') is very low!');
END IF;
END;

이 -50에서인지 나는 그것을 계산 한 후 값 "BILANZ"을 확인하시기 바랍니다. 이 오류가 발생하는 이유 어떤 생각을 가지고 있습니까?

어떤 도움을 주셔서 감사합니다!

해결법

  1. ==============================

    1.몇 가지 문제는 여기에 있습니다 :

    몇 가지 문제는 여기에 있습니다 :

    행운을 빌어 요.

  2. ==============================

    2.당신은 트리거 테이블을 수정. 업데이트 트리거하기 전에 사용

    당신은 트리거 테이블을 수정. 업데이트 트리거하기 전에 사용

    CREATE OR REPLACE TRIGGER Aktien_Bilanz_Berechnung
    BEFORE INSERT OR UPDATE OF TAGESKURS OR INSERT OR UPDATE OF  WERT_BEIM_EINKAUF
    ON AKTIE
    FOR EACH ROW
    DECLARE
        v_bfr number;
    BEGIN
        v_bfr := :new.TAGESKURS - :new.WERT_BEIM_EINKAUF;
        :new.BILANZ := v_bfr;
        IF v_bfr < -50 THEN
          Raise_Application_Error(-20456,'ACHTUNG: The value (Nr: '|| :new.AKTIEN_NR || ') is very low!');
        END IF;
    END;
    
  3. from https://stackoverflow.com/questions/50966543/oracle-trigger-error-ora-04091 by cc-by-sa and MIT license