본문으로 바로가기

 

테이블 생성시

datetime컬럼에 기본값으로 now() 적용은 안되고 CURRENT_TIMESTAMP 를 사용해야 함

mysql 5.5 버전 이하 에서는 한 테이블당 1개의 컬럼만 CURRENT_TIMESTAMP를 사용 할수 있다

 

mysql 5.6 부터는 이 제한이 해제 되었다.

 

CURRENT_TIMESTAMP 입력시 오류 나는 경우 (CURRENT_TIMESTAMP) 이렇게 괄호 추가

 

CREATE TABLE table (

  date1 datetime DEFAULT CURRENT_TIMESTAMP,

  date2 timestamp DEFAULT CURRENT_TIMESTAMP

)

 

 

때로는 '0000-00-00 00:00:00' 문자열을 기본값으로 사용하는 경우도 있는데,

이 경우 IDE에서는 <null>로 보이는 경우가 있다.

웹에서 null 체크가 적용되지 않을 경우 이를 확인해 보자.

 

관련해서 -

날짜의 범위가 올바르지 않으면 데이터 insert 자체가 안되는 경우

sql_mode가  STRICT_TRANS_TABLES 일 경우 오류를 토해내고 실행 되지 않는다.

 

 

SELECT @@sql_mode;

 

 

 

데이터 업데이트시 날짜를 등록 하게 할 경우

CREATE TABLE `테이블` (

  `modified_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

)

 

이미 생성된 테이블에 조건을 추가 할 경우

ALTER TABLE 테이블 CHANGE 해당컬럼명 해당컬럼명 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;

 

해당 컬럼이 비어있다면, 현재 시간이 기본적으로 들어가는데 이유는 모르겠다..

DEFAULT CURRENT_TIMESTAMP NOT NULL 없이 해도 동일함

 

 

 

 

 

 

'[ 서버 & DB 관련 ] > MySQL' 카테고리의 다른 글

mysql workbench 설치 (centos)  (0) 2019.05.10
mysql 문자열 합치기, 숫자형 문자형 변환  (0) 2019.05.10
mysql FUNCTION, PROCEDURE 예제  (0) 2019.05.10
변수 사용 예  (0) 2019.05.02
mysql 커서 샘플 - Cursor  (0) 2019.04.29