AAA 라는 테이블이 존재하고, a~c 라는 필드가 존재합니다.
신규입력시 a, b 값이 입력되며, c 는 무조건 null 입니다.
그리고 트리거를 통해 AAA 테이블에 insert, after update, after delete 조건에 다른 DBMS 의 BBB, CCC 등의 테이블로 값을 전송하는 것을 만들었습니다. 그리고 insert 후에는 AAA 테이블의 c 라는 필드에 어떠한 값을 생성하여 넣고 있습니다.
AAA 라는 테이블은 하루에 약 1만건 이상의 데이터가 신규로 입력이 됩니다.
현재 300만건 정도인데, 초기에는 트리거 없이 프로시져로 한줄씩 읽어 외부의 BBB, CCC 에 값을 전송하고 AAA.c 필드에 값을 update 하였습니다.
그리고 트리거를 생성했습니다.
당연히 AAA.c 가 null 인 레코드가 다수 존재합니다.
문제는 프로시져를 다시 돌리면 마지막에 update 를 하기 때문에 트리거에서 update 에 반응하여 작동이 됩니다. 그럼 2중 전송이 됩니다.
이러한 상황에서 프로시져 내에서 update 되는 것은 트리거 적용을 받지 않도록 하는 방법이 없을까요?
트리거를 삭제 혹은 diable 하고 update 한 뒤에 다시 트리거를 생성하거나 enable해야 하나요? 이럴 경우 그 찰나의 시간에 트리거 적용이 안된 채로 insert 되는 값이 없을지 염려됩니다.
조언 부탁드립니다. |