최근 추가개발/유지보수 진행으로 DB Table에 추가로 column 생성 할 일이 생겼었다. 당연히 평범하게 alter table 명령어로 추가했는데 (사실은 GUI 툴로 했음) 테이블 수정 완료 한 후에 데이터 처리를 할 때 마다 insert error가 떠서 아니.. 왜.. 왜???? 하고 오전시간을 통째로 날려먹었음.
보통은 오류메세지에도 나온 것 처럼 단순히 column-value 수가 맞지 않아서 그랬겠지만 내 케이스의 경우는 분명 insert 하려는 column 이랑 코드에 작성한 column 갯수도 맞고.. 아니 갯수가 다른게 아무리 봐도 없어서 동공지진하면서 식은땀 한바가지 흘렸다ㅠ 근데 알고보니까 별게 아니라 테이블에 trigger 가 걸려있어서 발생한 현상이었음.
무슨 상화이었냐 하면 실제로 데이터가 저장되는 테이블이 있고, log 테이블 데이터는 원본 테이블에 trigger 를 달아서 원본 테이블에 insert / update 가 발생하면 log 테이블 row로 insert 처리가 되도록 작성해놨는데, `*` 기호를 사용해서 trigger를 달다 보니 당연히 log 테이블에 같이 column추가를 하지 않으면 오류가 발생할 수 밖에..
바보처럼 원본테이블 순서 바꿨다가 오류터져서 약간 쫄깃했다; 서비스에 지장 생길 만큼 심각하게 문제 생긴게 아니라서 천만다행;;
생각해보면 그 전에도 비슷한 케이스가 있었던 것 같은데 또 똑같은 짓을 하고 있는 나를 발견하고 기록해두기로 함.. 휴..