자바/리팩토링
[리팩토링]Mysql 5.1 과 5.6 이상에서의 timestamp 기본 값 설정 관련 문제
OverTheHorizon3410
2023. 10. 1. 22:57
5.1 버전과 그 이전
- MySQL 5.1에서는 한 테이블 내에서
DEFAULT CURRENT_TIMESTAMP
와ON UPDATE CURRENT_TIMESTAMP
속성을 갖는TIMESTAMP
컬럼을 각각 하나씩만 허용합니다.- 위 처럼 한 테이블내에서 시간값에 default 값을 추가해주는 경우 기본값 설정을 할 수 없다는 문구가 발생함.
5.6 이상
- 이후 버전에서는 이러한 제한이 완화되어 두 개 이상의
TIMESTAMP
컬럼에DEFAULT CURRENT_TIMESTAMP
를 사용할 수 있게 되었습니다.
- 여러
TIMESTAMP
컬럼에 대해DEFAULT CURRENT_TIMESTAMP
와ON UPDATE CURRENT_TIMESTAMP
클로즈를 사용할 수 있습니다
이유?
- 당시의 기술적인 제약과 내부 구현의 복잡성 때문이라고함.
- 워낙에 오래전에 나온 DB 버전이기에 이해는 된다..
우회방법
DATETIME
컬럼 사용 + 트리거로 기본값 설정하기- 트리거 사용시 어플리케이션 레벨에서 고려하는 것을 넘어서 DB 영역까지 넘어가서 로직을 고려해야하는 사태가 발생할 것 같음.
- 어플리케이션 레벨에서 기본값을 관리하기 → 채택
Uploaded by N2T