전문가님들.. 트리거 좀 봐주시면 감사하겠습니다. 0 1 1,525

by 마티나 [2013.01.21 14:21:48]


안녕하세요 ^^

아래 트리거 내용중에 DB link를 걸어둔 테이블이 들어가니까 자꾸 에러가 뜹니다 ㅠ

A테이블과 E테이블 중에 a.COL1와 e.COL2 가 같으면 ..

A테이블에 COL3에 '6'이라는값을.. E테이블에 COL4에 Y이라는 값을 넣고 싶습니다...

근데 문제는 E 테이블은 DB link 에 존재 합니다.

도와주시면 정말 감사하며 살겠습니다 ㅠ

우선 아래는 제가 짠 트리거 입니다.

TRIGGER ed_stat_update
AFTER UPDATE OF ed_stat ON study
FOR EACH ROW
BEGIN
    FOR CS IN (
    SELECT  s.ed_stat A
   ,e.flag B
  FROM  study s, AST.AEIHPACSREQC@dev101 e
  WHERE  to_char(a.access_no) = to_char(e.execprcpuniqno) and e.flag='N' and rownum<2
    )
    LOOP
    UPDATE AST.AEIHPACSREQC@dev101
   SET flag  = 'Y'
WHERE  ROWID = CS.A
    ;
    UPDATE  study
   SET  ed_stat  = '6'
WHERE  ROWID = CS.B
    ;
    END LOOP ;
END ;
by 마농 [2013.01.21 15:13:38]
-- 업데이트 대상 테이블을 참조하거나 업데이트 할수 없습니다.
-- 업데이트 대상 레코드의 특정컬럼값을 단순하게 변경하는 거라면
-- Before 트리거에서 :new.컬럼 에 직접 값을 대입하면 됩니다.
-- For Each Row 구문 자체가 변경레코드 루프 도는 구문이므로 별도 루프로 Select 할 필요 없습니다.
CREATE OR REPLACE TRIGGER ed_stat_update
BEFORE UPDATE OF ed_stat ON study
FOR EACH ROW
BEGIN
    UPDATE ast.aeihpacsreqc@dev101
       SET flag = 'Y'
     WHERE execprcpuniqno = :NEW.access_no
       AND flag = 'N'
    ;
    :NEW.ed_stat := '6';
END;
/
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입