[리팩토링]Mysql 5.1 과 5.6 이상에서의 timestamp 기본 값 설정 관련 문제

5.1 버전과 그 이전

  • MySQL 5.1에서는 한 테이블 내에서 DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP 속성을 갖는 TIMESTAMP 컬럼을 각각 하나씩만 허용합니다.
    • 위 처럼 한 테이블내에서 시간값에 default 값을 추가해주는 경우 기본값 설정을 할 수 없다는 문구가 발생함.

5.6 이상

  • 이후 버전에서는 이러한 제한이 완화되어 두 개 이상의 TIMESTAMP 컬럼에 DEFAULT CURRENT_TIMESTAMP를 사용할 수 있게 되었습니다.
  • 여러 TIMESTAMP 컬럼에 대해 DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP 클로즈를 사용할 수 있습니다

이유?

  • 당시의 기술적인 제약과 내부 구현의 복잡성 때문이라고함.
  • 워낙에 오래전에 나온 DB 버전이기에 이해는 된다..

우회방법

  1. DATETIME 컬럼 사용 + 트리거로 기본값 설정하기
    1. 트리거 사용시 어플리케이션 레벨에서 고려하는 것을 넘어서 DB 영역까지 넘어가서 로직을 고려해야하는 사태가 발생할 것 같음.
  1. 어플리케이션 레벨에서 기본값을 관리하기 → 채택


Uploaded by N2T