Подтвердить что ты не робот

Колонка timestamp mysql

Можно ли определить столбец timestamp в таблице MySQL, который будет автоматически обновляться каждый раз при изменении поля в той же строке? В идеале этот столбец должен быть первоначально установлен на время, когда была вставлена ​​строка.

Cheers, Дон

4b9b3361

Ответ 1

Это стандартная функциональность типа столбца timestamp. Однако обратите внимание, что формат этого типа - yyyymmddhhmsms (все цифры, никакие двоеточия или другое разделение).

РЕДАКТИРОВАТЬ: Вышеупомянутый комментарий о формате применим только для версий MySQL < 4.1... Более поздние версии форматируют его как DateTime

Ответ 2

Вы можете использовать столбец timestamp, как упомянуты другие плакаты. Вот SQL, который вы можете использовать для добавления столбца в:

ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

Это добавляет столбец "lastUpdated" со значением по умолчанию текущей даты/времени. Когда эта запись будет обновлена ​​(скажем, через 5 минут), отметка времени автоматически обновится до текущего времени.

Ответ 3

Это то, что я наблюдал (MySql 5.7.11) -

Первый столбец TIMESTAMP в таблице получает текущую временную метку в качестве значения по умолчанию. Таким образом, если вы внесете INSERT или UPDATE без предоставления значения, столбец получит текущую временную метку.

В каждом последующем столбце TIMESTAMP должно быть явно задано значение по умолчанию. Если у вас есть два столбца TIMESTAMP, и если вы не укажете значение по умолчанию для второго столбца, вы получите эту ошибку при попытке создать таблицу -

ОШИБКА 1067 (42000): недопустимое значение по умолчанию для COLUMN_NAME

Ответ 4

IIRC, первый столбец в таблице типа timestamp устанавливается, когда запись создана и не может быть изменена. Второй столбец типа timestamp устанавливается всякий раз, когда запись обновляется. Или наоборот.

Я не много работал MySQL, поэтому вы хотите проверить это.

Ответ 5

Временная метка MySQL устанавливается с созданием или временем обновления только в том случае, если установлено значение по умолчанию. ALTER TABLE some_table ADD when TIMESTAMP DEFAULT CURRENT_TIMESTAMP.
В противном случае он работает точно так же, как поле DateTime, только то, что оно относительно 1970/01/01 UTC, поэтому это абсолютный момент времени, не зависящий от определенного часового пояса, как DateTime.