2009-05-03 12 views
34

나는 MySQL 5.x (PHP 포함)에서 타임 스탬프를 사용하여 이벤트 시간을 기억합니다. 개발하는 동안 나는 모든 컬럼에서 뭔가를 변경하는 쿼리로 테이블을 업데이트해야했습니다. 타임 스탬프는 현재 시간으로 리셋되었습니다.MySQL 타임 스탬프 만 생성시

업데이트시 교체가 아닌 삽입시에만 타임 스탬프를 변경할 수 있습니까?

+1

Google에 다음과 같은 사람들을위한 늦은 답변 : 데이터베이스에서 수동 편집을 수행 할 때 TIMESTAMP를 사용하는 경우. 또는 TIMESTAMP 컬럼이 여러 개인 경우 모든 컬럼을 터치하고 싶지 않은 경우; MySQL 매뉴얼은 컬럼을 자신에게 할당한다고 말한다. 명시 적으로 현재 값 (예 : "updated_on = updated_on")으로 열을 설정하므로 UPDATE에 의해 변경되지 않습니다. –

답변

65

Here's all you need to know. 즉,하지만 난이 그것을해야한다고 생각 : 여기 for time-stamp

ALTER TABLE `mytable` 
CHANGE `mydatefield` `mydatefield` 
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
+0

감사합니다. 여기서 "NULL이 아닌"부분은 필요하지 않습니다. –

0

해당 필드에 default value을 사용할 수 있으며 삽입 또는 업데이트 쿼리에 포함하지 마십시오.

0
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

아주 좋은 문서.

+0

뭔가 빠져있을 수 있지만 내 테이블이 이런 식으로 정의되어 있지만 여전히 날짜가 변경되었습니다. mysql 설명에서 : 'pur_time', 'timestamp', 'NO', '', 'CURRENT_TIMESTAMP', ' – Nir

1

해당 열에 대해 DATETIME을 사용하는 것이 좋습니다. 레코드가 업데이트되면 변경되지 않습니다.

나를 위해, 나는 그것을 사용하지 않는 것이 일반적이지만 레코드가 마지막으로 터치되었을 때를 추적하기 위해 TIMESTAMP를 사용한다.