복붙노트

[SQL] 업데이트 트리거 후 ORACLE : ORA-04091 테이블 오류를 돌연변이 해결

SQL

업데이트 트리거 후 ORACLE : ORA-04091 테이블 오류를 돌연변이 해결

나는 트리거를 만들려고하고있다 :

  create or replace trigger NAME_OF_TRIGGER
  after insert or update on table1
  REFERENCING OLD AS OLD NEW AS NEW
  for each row

비 의무 필드의 자동 몇 채우기에 테이블에 삽입 / 업데이트 할 때.

이 커서를 사용하는 저를 요구하는 표 2에서 선택하여도 표 (트리거의 주제).

값에 대한 임시 테이블 또는 자율 트랜잭션을 사용하지 않고 돌연변이 테이블 오류를 방지 할 수있는 방법이 있습니까?

해결법

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

    1.TL; DR NO. 없다

    TL; DR NO. 없다

    돌연변이 테이블 오류가 트리거를 소유하거나 테이블을 쿼리로 인해 발생 소유 테이블과 외래 키 관계에 참여하는 테이블 (데이터베이스의 이전 버전에서 적어도하지 않도록 여전히 가져올 지 여부를).

    적절하게 설계된 응용 프로그램에서이 필요는 없습니다. 많은 사람들이 가난한 데이터 모델링의 지표로 돌연변이 테이블을 생각하는 이유입니다. 예를 들어, 돌연변이는 종종 불충분 정상화와 연결되어 있습니다.

    제이미 자윈 스키 의역하려면 다음 돌연변이 테이블을 제외 직면했을 때 어떤 사람들을, "나는 자율 트랜잭션을 사용하는 것, 알고있다."생각 이제 그들은 두 가지 문제가있다.

    INSERT 또는 UPDATE 트리거하기 전에 새로운 값이나 가상 열을 사용하여 : 때때로 오류가 간단히 수정하여 피할 수 있습니다. 그러나 이러한 적용 여부를 확인하기 위해 자세한 내용을 게시해야합니다.

    그러나 가장 좋은 해결 방법은 다른 종류를 필요로하지 않는 것입니다.

  2. from https://stackoverflow.com/questions/6915325/oracle-after-update-trigger-solving-ora-04091-mutating-table-error by cc-by-sa and MIT license