안녕하세요 오라클 트리거에 관해서 질문드립니다.
현재 한테이블에 트리거가 인서트트리거, 업데이트트리거, 딜리트트리거 이렇게 걸려있어요
인서트나 딜리트는 상관없는데 업데이트에서 쓰잘떼기 없는 내용이 업데이트 되어도 히스토리쪽에 자꾸
트리거때문에 내용이 추가가 되서 문제가 되거든요.
그래서 테이블의 특정칼럼이 변경되지 않는 한 업데이트 트리거가 작동 안되도록 하고싶은데..
예를들면 USE 란 칼럼이 Y에서 N 으로 변경되지 않는 이상 NO칼럼이 아무리 1에서 2로 바껴도 트리거가 작동이 안되는거죠.
제가 토드를 사용하고 있는데 트리거를 열어보면 구문에 When Updating Columns 라고 있고
Fire the trigger when any column is updated 와 Fire the trigger only the specified columns are updated 이렇게 두개가 있는데
후자껄로 선택되어있어요 그래서 아래 테이블의 칼럼에서 USE란 칼럼만 선택을 해서
내용만 보면 USE란 컬럼이 선택되어있으니 그거만 업데이트 되었을때 트리거를 실행해라 라고 되어있거든요
그래서 업데이트문으로 다른 컬럼도 수정해보구 USE칼럼도 수정해봤는데 확실히 USE말고는 트리거가 실행이 안되더라구요.
근데 erp프로그램에서 이 테이블을 수정하는 부분이 있거든요 거기서 수정하면 다른 컬럼을 수정하든 USE칼럼을 하던 전부 트리거가 동작을 하네요
왜 그러는건지 모르겠네요.. 왜 DB상에서 데이터를 수정하면 트리거가 수행이 안되고 프로그램으로 수정하면 트리거가 수행이되는지..
만약에 이게 안되서 트리거 바디 부분을 수정해야한다면 어떻게 내용을 수정해야하는지,, :OLD.USE <> :NEW.USE 이렇게 if문으로 넣어야 되는건지..
사실은 구문에 원래 추가했었는데 안먹더라구요;; 능력자분들 답변 부탁드려요~ |