레코드가 테이블에 삽입되는 경우 레코드를 몇 개로 분할하여 삽입해야하는 경우가 있습니다.INSERT 문이있는 INSERT 문
로직은 INSERT 트리거 이전에 발생하는 INSERT 트리거 내부에 작성됩니다. 이 트리거 내에서 INSERT 문을 실행하려고하는데, 그 결과 트리거의 재귀 호출이 발생합니다. 그러나 나는 이것이 일어나기를 원하지 않는다. 나는
execute immediate 'ALTER TRIGGER sale_trigger DISABLE';
처럼 떨어지게를 사용하여 몸에서 트리거를 해제하려고하지만, 분명히이 확약 조작이며, 따라서 트리거 내부에서 작업을 나던.
트리거의 재귀 호출을 어떻게 피할 수 있습니까?
편집 내 방아쇠를 declare PRAGMA AUTONOMOUS_TRANSACTION;
으로 선언 했으므로 이제 alter
문을 실행할 수 있습니다. 그러나 동일한 트리거에서 트리거를 비활성화하면 PLSQL 개발자가 작업을 중지합니다. 나는 무엇을해야합니까? :)
아마도 데이터가 삽입되기 시작한 것과 같이 트리거가 두 번째로 호출되고 있음을 어떻게 알 수 있습니까? 따라서 이것을 트리거에서 직접 확인할 수 있으며 두 번째 호출의 경우 삽입을 호출하지 않습니다. – Mikhail
Havent는 방아쇠가 처음으로 호출되는지 여부를 식별하는 방법을 발견했습니다. 분석 데이터가 내 사건에 도움이 될 것 같지 않아 – Dennis
내가 발견 한 관리 방법은 대상 테이블에서 트리거를 통해 삽입되는 값에 따라 다른 기본값이있는 추가 열만 있으므로 트리거가이를 확인하고 ' 기본값과 다른 경우 삽입하지 마십시오. 비록 당신이 데이터 구조를 바꿀 수 없다면, 특히, 좋지 않은 것 같습니다 ... – Mikhail