트리거 조인 문의 입니다. 0 2 71

by 퍼품디올 [Oracle 기초] [2017.11.13 15:00:41]


안녕하세요 

고수님들께 

트리거 관련 질문을 좀 하려고 합니다. 

table a ( aa, bb, cc, dd, ee, ff, gg, hh)

table b ( aa, 11, 22, 33, 44, 55, 66, 77)  이 테이블들에 

트랜잭션 발생 후 a.aa = b.aa 조인을 걸어 insert table tri_tab(aa, cc, 33, ff, 55, gg, 77)  이 테이블에 insert 를 하려고 합니다. 

table a,b 중에 aa, cc, 33, ff, 55, gg, 77 

이 컬럼의 트랜잭션이 발생했을때만 트리거가 작동해 트리거 테이블에 insert 하려고 합니다. 

고수님들께 조언 부탁드립니다. 

감사합니다. 

by 마농 [2017.11.13 15:54:28]
CREATE TRIGGER tr_table_a
AFTER INSERT OR UPDATE OF cc, ff, gg ON table_a
DECLARE
    v_cc table_a.cc%TYPE := :NEW.cc;
    v_ff table_a.ff%TYPE := :NEW.ff;
    v_gg table_a.gg%TYPE := :NEW.gg;
    v_33 table_b.33%TYPE;
    v_55 table_b.55%TYPE;
    v_77 table_b.77%TYPE;
BEGIN
    BEGIN
        SELECT 33, 55, 77
          INTO v_33, v_55, v_77
          FROM table_b
         WHERE aa = :NEW.aa
        ;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            null;
    END;
    INSERT INTO tri_tab(aa, cc, 33, ff, 55, gg, 77)
    VALUES (:NEW.aa, v_cc, v_33, v_ff, v_55, v_gg, v_77)
END;
/

CREATE TRIGGER tr_table_b
AFTER INSERT OR UPDATE OF 33, 55, 77 ON table_b
DECLARE
    v_cc table_a.cc%TYPE;
    v_ff table_a.ff%TYPE;
    v_gg table_a.gg%TYPE;
    v_33 table_b.33%TYPE := :NEW.33;
    v_55 table_b.55%TYPE := :NEW.55;
    v_77 table_b.77%TYPE := :NEW.77;
BEGIN
    BEGIN
        SELECT cc, ff, gg
          INTO v_cc, v_ff, v_gg
          FROM table_a
         WHERE aa = :NEW.aa
        ;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            null;
    END;
    INSERT INTO tri_tab(aa, cc, 33, ff, 55, gg, 77)
    VALUES (:NEW.aa, v_cc, v_33, v_ff, v_55, v_gg, v_77)
END;
/

 


by 퍼품디올 [2017.11.15 09:25:24]

감사합니다.

응용하여 개발하였습니다.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입