2014-01-19 9 views
0

다음 쿼리를 사용하여 테이블 PER_PREVIOUS_EMPLOYERS에서 업데이트/삽입 된 행을 찾습니다. 이제 모든 행이 PER_PREVIOUS_EMPLOYERS 테이블에서 삭제 될 때 쿼리가 트리거되기를 원합니다. 어떤 도움을 주시면 감사하겠습니다.테이블에서 행 삭제시 쿼리

SELECT 
papf.full_name, 
papf.email_address 
FROM PER_PREVIOUS_EMPLOYERS PPEV, 
per_all_people_F papf 
WHERE PPEV.ROWID = :ROWID 
and PPEV.BUSINESS_GROUP_ID= 81 
and papf.person_ID=ppev.person_id 
and trunc(sysdate) between papf.effective_start_date and papf.effective_end_date 

오라클 경고에서 사용하고 있으므로 삭제 트리거에서 생성 또는 교체를 사용할 수 없습니다.

당신은 트리거 사용할 수 있습니다

답변

0

: all_data의 비교에 의해 당신이 all_data_end_day 같은 테이블의 모든 데이터를 삽입 할 수 있습니다 당신은 아침에 all_data 같은 테이블의 모든 데이터를 삽입 할 수 있습니다

CREATE or REPLACE TRIGGER trigger_name 
AFTER DELETE 
    ON PER_PREVIOUS_EMPLOYERS 
    FOR EACH ROW 

DECLARE 
    name varchar2; 
    email varchar2; 

BEGIN 
    SELECT 
    papf.full_name, 
    papf.email_address 
    INTO name, email 
    FROM PER_PREVIOUS_EMPLOYERS PPEV, 
    per_all_people_F papf 
    WHERE PPEV.ROWID = :ROWID 
    and PPEV.BUSINESS_GROUP_ID= 81 
    and papf.person_ID=ppev.person_id 
    and trunc(sysdate) between papf.effective_start_date and papf.effective_end_date; 

    --store the result somewhere 
EXCEPTION 
    WHEN ... 
    -- exception handling 

END; 
+0

오라클 경고를 사용하고 있기 때문에 트리거를 생성하거나 교체 할 수 없습니다. pl/sql 쿼리 만 사용할 수 있습니다. –

+0

Oracle Alert 이벤트를 살펴보십시오. 도움이 될 것 같습니다. –

+0

가이드 안의 "삽입 후"는 "업데이트 후"로 지정됩니다. 필요한 건 삭제 후 –

0

, 일의 끝을 and all_data_end_morning 어떤 행이 삭제되었는지 확인할 수 있습니다. all_data에 모든 행이 있고 all_data_end_day에 존재하지 않습니다.

+0

입니다. 실용적인 접근법이 아니다. –

관련 문제