2009-05-03 2 views
34

Я использую timestamp для MySQL 5.x (с PHP) для запоминания событий. Во время разработки мне пришлось обновить таблицу запросом, который меняет что-то во всех столбцах. Затем метка времени была сброшена до текущего времени.MySQL timestamp only on create

Как изменить временную метку только на вставках, а не на обновлениях или заменить?

+1

Поздний ответ для других, кто может это сделать Google: если вы используете TIMESTAMP при редактировании руководств в своей базе данных; или если у вас несколько столбцов TIMESTAMP и вы не хотите трогать их всех; в руководстве MySQL указано, чтобы назначить столбец самому себе. Вы явно устанавливаете столбец в его текущее значение (то есть. «Updated_on = updated_on»), чтобы оно не изменялось UPDATE. – 2010-11-12 16:22:46

ответ

65

Here's all you need to know. Короче говоря, хотя, я думаю, что это нужно сделать, это:

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

Спасибо! Здесь «NOT NULL» часть не требуется, я думаю. –

0

Вы можете использовать default value для этого поля и не включать его в запрос на вставку или обновление.

0
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

Очень хорошая документация здесь for time-stamp.

+0

Возможно, мне что-то не хватает, но мой стол (и был) определен таким образом, но все же даты изменились. Из mysql объясните: 'pur_time', 'timestamp', 'NO', '', 'CURRENT_TIMESTAMP', '' – Nir

1

Я предлагаю использовать DATETIME для этой колонки. Он не изменится при обновлении записи.

Для меня я использую TIMESTAMP для отслеживания при последнем касании записи, хотя в целом я не использую его.

 Смежные вопросы

  • Нет связанных вопросов^_^