삭제 트리거시 오류 (ora-04091) 0 1 2,510

by 옹네 [2011.01.31 17:31:58]


아래 트리거에서 빨간색 부분을 after 로, new 로 해봐도 똑같이 같은 오류가 나요.
아주 간단한건데...

miom_div 테이블의 데이타 삭제시 aclm_slip 테이블의 데이타도 삭제해라!! 

오류메시지 :
테이블 MATS.MIOM_DIV가 변화하고 있어서 트리거/함수가 이를 볼 수 없습니다


음.. 검색해보니까 before 는 변화하기 전이니까... before 로 쓰면 될거 같은데
왜 저런 오류가 나는지 모르겠어요. ㅠㅠㅠㅠㅠ 도와주세요....




================================================================
CREATE OR REPLACE TRIGGER MATS.trad_miom_div
before delete
ON MATS.MIOM_DIV referencing new as new old as old
for each row

declare
    wk_i_busi_gbn   mstm_stck.i_busi_gbn%type;  /* 업무구분   */
    wk_o_slip_no    miom_div.o_slip_no%type;    /* 전표번호 */
begin
    begin
    select  i_busi_gbn, o_slip_no
    into   wk_i_busi_gbn, wk_o_slip_no
    from    miom_div
    where   d_io     = :old.d_io
    and i_io     = :old.i_io
    and i_io_div    = :old.i_io_div
    and o_io     = :old.o_io;

    exception
    when no_data_found then
    wk_i_busi_gbn := '3';
    end;

  
    if (wk_i_busi_gbn <> '3') then
   
begin
    DELETE ACLM_SLIP
    WHERE  D_YY || I_OFFI || D_SLIP || O_SLIP || '0001' =  wk_o_slip_no; 
    exception
    when others then
    raise_application_error(-20010, replace(replace(replace(sqlerrm,'"',''), chr(10),''), chr(13),''));
    end;
end if;

exception
    when others then
   raise_application_error(-20010, sqlerrm);
end trad_miom_div;
/



 

by 마농 [2011.01.31 17:42:47]
트리거 걸린 테이블을 조회하실 수 없습니다.
또한, 조회할 필요조차도 없지요.
o_slip_no 가 필요하면 그냥 :old.o_slip_no 를 사용하시면 됩니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입