안녕하세요
고수님들께
트리거 관련 질문을 좀 하려고 합니다.
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 하려고 합니다.
고수님들께 조언 부탁드립니다.
감사합니다.
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;
/
감사합니다.
응용하여 개발하였습니다.