💻 내가 가진 개발 습관 중 하나는
TABLE에 DEFAULT로 값을 정해놓은 컬럼이 있더라도INSERT시 쿼리문에 명시적으로 해당 DEFAULT값을 입력하는 것이 습관이었다.
예를 들어,
과일 이름을 기록하는 FRUIT라는 테이블이 있다고 가정하자.튜플이 입력된 시간을 기록하는 INSERTDATE라는 컬럼에 DEFAULT값으로 CURRENT_TIMESTAMP가 설정되어있다고 하자.
이 경우에도 나는 아래와 같이 INSERT문에 NOW()라고 명시적으로 적었다.
INSERT INTO FRUIT(FRUITNAME, INSERTDATE) VALUES ('APPLE', NOW());
INSERT INTO FRUIT(FRUITNAME, INSERTDATE) VALUES ('BANANA', NOW());
이 습관이 만들어진 계기는 아래와 같다.
첫 배포를 진행하던 날이었다.테스트 서버에서 작업한 내용을 실서버로 옮기는 작업을 하고 있었다. Config 성격의 TABLE에 새로 튜플이 추가되어야해서 미리 작성해놓은 INSERT쿼리를 실행시켰다.그런데 내가 예상한 DEFAULT 값으로 들어가지 않았다.원인은 내가 작업하는 TABLE의 테스트서버와 실서버 DEFAULT값이 달랐다.
이 일을 계기로 INSERT시 쿼리문에 명시적으로 값을 적곤 했다.실수를 줄일 수 있는 좋은 방법이라고 생각했다.
⏰ 시간이 좀 지난 후 생각해보니
근데 만약 이렇게 SQL문에 명시적으로 DEFAULT값을 적는 일이 배포되는 코드 상에서 이루어진다면?
TABLE에 설정해놓은 DEFAULT값의 의미도 사용도 완전 무용지물이 되고,해당 컬럼은 결국 배포되는 코드에 종속적일 수 밖에 없게 된다.
😃 결론
TABLE의 컬럼에 DEFAULT값을 설정했으면 TABLE을 믿고 명시적으로 작성하는 것을 지양하자!
'개발 > 기타' 카테고리의 다른 글
MSSQL] UNIQUEIDENTIFIER (0) | 2021.02.16 |
---|---|
SCRAP] 인증서 관련 모든 것 (0) | 2020.12.03 |
Git 필요할 때 한번씩 찾게되는 명령어 (0) | 2020.11.18 |
Linux] 명령어 (작성 중) (0) | 2020.07.23 |
[CSS] <div> 안의 이미지, 텍스트 중앙에 놓기 (0) | 2020.01.15 |