2013-02-19 2 views
0

MySQL 데이터베이스에 타임 스탬프가 포함 된 열이 있습니다. 내 기록을 몇 번이나 업데이트해도 시간 기록은 업데이트되지 않습니다. 자동 업데이트되도록해야하는 것이 있습니까?레코드 업데이트에도 불구하고 MySQL의 타임 스탬프가 업데이트되지 않습니다.

Stackoverflow에서 다른 질문을 검색하는 경우 대부분이 반대라고 말하면 정말 혼란 스럽습니다. 예를 들어,이, Should I use field 'datetime' or 'timestamp'?

+----------------+-------------+------+-----+-------------------+----------------+ 
| Field   | Type  | Null | Key | Default   | Extra   | 
+----------------+-------------+------+-----+-------------------+----------------+ 
| Num   | int(11)  | NO | PRI | NULL    | auto_increment | 
| mem_name  | varchar(50) | NO |  | NULL    |    | 
| mem_id   | int(11)  | NO |  | NULL    |    | 
| car_number  | varchar(11) | NO |  | NULL    |    | 
| firstcall_time | timestamp | NO |  | CURRENT_TIMESTAMP |    | 
| tow_time  | datetime | NO |  | NULL    |    | 
+----------------+-------------+------+-----+-------------------+----------------+ 
6 rows in set (0.00 sec) 

One Record: 

+-----+----------+--------+------------+---------------------+---------------------+ 
| Num | mem_name | mem_id | car_number | firstcall_time  | tow_time   | 
+-----+----------+--------+------------+---------------------+---------------------+ 
| 1 | Jakey | 54564 | SHA34345 | 2013-02-19 16:14:12 | 2013-02-19 16:32:45 | 
+-----+----------+--------+------------+---------------------+---------------------+ 
1 row in set (0.00 sec) 

After Updating: 

+-----+----------+--------+------------+---------------------+---------------------+ 
| Num | mem_name | mem_id | car_number | firstcall_time  | tow_time   | 
+-----+----------+--------+------------+---------------------+---------------------+ 
| 1 | Tommy | 54564 | SHA34345 | 2013-02-19 16:14:12 | 2013-02-19 16:32:45 | 
+-----+----------+--------+------------+---------------------+---------------------+ 
1 row in set (0.00 sec) 
+0

이 필드에 'ON UPDATE ...'절이 정의되어 있습니까? 당신이 말하는 테이블에 대한'SHOW TABLE ... '의 결과를 보여줄 수 있습니까? – raina77ow

+0

업데이트 값이 on_update_current_timestamp로 설정되어 있습니까? – Achrome

+0

필자는 phpMyAdmin에서 드롭 다운 메뉴의 필드를 선택하여 테이블을 만들었습니다. 저는 SQL을 처음 접했습니다. 미안, 나에게 완전한 명령을 줄 수 있니? "SHOW TABLE tbl_name"을 시도했는데 오류가 발생합니다. – Belgarion

답변

7

당신의 타임 스탬프는 beacuse 업데이트되지 않는 주요 이유는하지 않은 다음

내 테이블 구조

감사합니다 (최고 등급의 답변을 봐) 테이블 생성 문에 ON UPDATE CURRENT_TIMESTAMP 절이 추가되었습니다.

는 테이블 변경 명령을 사용하여 변경을 수정하여 열

With both DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP, 
the column has the current timestamp for its default value and 
is automatically updated to the current timestamp. 
당신은 UPDATE CURRENT_TIMESTAMP에

CREATE TABLE t1 (
    id int, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
      ON UPDATE CURRENT_TIMESTAMP); 

편집에 추가해야합니다

- 명령

alter table <tablename> modify <columnName> TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
     ON UPDATE CURRENT_TIMESTAMP; 

참조를 수정 표를 http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

+0

phpmyadmin에 내 테이블을 만들었습니다. 수동으로 ALTER 테이블 명령을 입력하지 않고 Phpmyadmin 인터페이스를 통해 ON UPDATE CURRENT_TIMESTAMP를 추가하는 방법이 있습니까? – Belgarion

+0

내 편집 확인 내 코드를 게시했습니다 – Meherzad

+0

정말 고마워요! =) – Belgarion

5

On UPDATE CURRENT_TIMESTAMP

MySQL의 쿼리를 추가

ALTER TABLE `table_name` CHANGE `date_field` `date_field` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

는 희망이 도움이!

관련 문제