emp테이블을 다른 db로 copy하는 DML tigger를 테스트 중에 있습니다.
조건은 emp테이블의 모든 변경분에 대하여 다른 db로 copy해야합니다.
결국 table copy가 되는의미? 이렇게 되면 CDC나 Mview를 쓰는게 맞는데
혹시나하여 우선 테스트로 update만 하는 trigger를 아래처럼 작성후 어떤 조건이 들어 올지 모르는 상태?
CREATE or REPLACE trigger EMP_TRIGGER
AFTER INSERT OR DELETE OR UPDATE ON EMP
FOR EACH ROW
BEGIN
IF UPDATING THEN
UPDATE EMP@TESTDB SET EMPNO=:NEW.EMPNO, ENAME=:NEW.ENAME, JOB=:NEW.JOB, MGR=:NEW.MGR, HIREDATE=:NEW.HIREDATE, SAL=:NEW.SAL, COMM=:NEW.COMM, DEPTNO=:NEW.DEPTNO
WHERE EMPNO=:OLD.EMPNO AND ENAME=:OLD.ENAME AND JOB=:OLD.JOB AND MGR=:OLD.MGR AND HIREDATE=:OLD.HIREDATE AND SAL=:OLD.SAL AND COMM=:OLD.COMM AND DEPTNO=:OLD.DEPTNO;
END IF;
END;
/
update를 아래처럼 source쪽에서 실행했습니다.
SQL>update emp set ENAME='TT', JOB='SS-SS' where empno in (8888,7566);
commit;
target쪽에 emp가 8888 인 로우만 ENAME='TT', JOB='SS-SS'로 변경되었고 emp=7566인 로우는 변경이 안되고 그대로입니다.
왜 하나의 row만 될까요?
제가 트리거를 잘못 짠건지 아니면 트리거로 될 수 없는것인데 삽질하는 것인지 확인좀 부탁드리겠습니다.