mysql timestamp default current_timestamp

DB & SQL 2015. 10. 10. 00:27

mysql timestamp

CREATE TABLE test (
	id varchar(50) PRIMARY KEY
	, regdate timestamp DEFAULT CURRENT_TIMESTAMP
	, updatedate timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

mysql 5.6.5 version 이상에서는 timestamp를 하나만 사용할 수 있는 제한이 없어져서
위의 쿼리로 테이블을 생성할 수 있다.
regdate는 insert시에 삽입된 현재 시간이 들어가고
updatedate는 update시에 수정된 현재 시간이 들어간다.


이전 버전에서는 이 처럼 두개의 컬럼에 timestamp를 적용하려면 아래처럼 쿼리를 작성해야 한다.
우분투 패키지로 mysql을 설치하면 5.5 버전이 설치되므로 아래 쿼리를 이용해야한다.

create table test (
	id varchar(50) primary key
	, regdate timestamp default 0
	, updatedate timestamp default current_timestamp on update current_timestamp
);

위의 쿼리로 생성된 테이블에 insert시 주의할 점은
regdate에 NULL을 지정해서 넣어야 된다.
만약 NULL로 지정하지 않고 insert를 하면 정상적인 값이 저장되지 않는다.
아래처럼 insert문을 작성한다.

INSERT INTO test VALUES ('test', NULL, NULL);

또는

INSERT INTO test(id, regdate) VALUES ('test', NULL);

이후에 update문으로 수정시에 updatedate는 수정된 시간으로 자동 변경된다.

: