2011-02-09 2 views
0

OLD 테이블과 NEW 테이블이 있습니다. 나는 테이블 OLD 트리거 이벤트를 채우는 기존 프로세스에 삽입하려고합니다. 삽입 된 각 새로운 행에 대해이 이벤트는 새로 삽입 된 행을 NEW 테이블에도 삽입합니다.pl sql : 다른 테이블의 데이터 삽입을위한 트리거

insert into NEW 
select (select a.id,a.name,a.address,b.jitter,a.packet,a.compo,b.rtd,a.dur from OLD a, 
     select address,packet,compo, avg(jitter) as jitter, avg(rtd) as rtd from OLD 
     group by address,packet,compo) b 
     where a.address=b.address and a.packet=b.packet and a.compo=b.compo; 

당신이 모든 가능한 실수를 수정하거나 아래 문에 다른 트리거 구문을 제안 할 수 있습니다 : 트리거의 몸 안에서, 내가 전에 NEW에 삽입 OLD의 값을 집계 아래 쿼리를 포함해야합니까?

CREATE OR 시작 각 행에 대해 OLD 에 업데이트 후 트리거 삽입 교체 끝 위의 내 선택 쿼리;

답변

0

각 행 트리거에 대해 테이블 ​​자체를 쿼리 할 수 ​​없습니다. 그렇게 할 경우 테이블 변경 오류 메시지가 표시됩니다. ID 번호 나 매우 기본적인 검사와 같은 가장 기본적인 기능에 대해서만 트리거를 사용하는 것이 좋습니다. 더 복잡한 작업에 트리거를 사용하면 알 수없는 모든 종류의 작업으로 인해 디버깅 및 유지 관리가 매우 어려운 시스템으로 쉽게 끝날 수 있습니다. 또 다른 접근 방식이 질문에

봐 : getting rid of Insert trigger

0

오라클 스트림도 좋은 해결책이 될 수 있습니다. 적용 핸들러에서 사용자 정의 PL/SQL 코드를 포함 할 수 있습니다. 이 프로시 저는 COMMIT 이후에 호출되므로 테이블 오류의 변이를 피할 수 있습니다.

그러나 Streams를 작동 시키려면 많은 양의 설정이 필요합니다. 당신이하는 일에 너무 과한 행동일지도 모릅니다.

관련 문제