Можно ли определить столбец отметки времени в таблице MySQL, который будет автоматически обновляться каждый раз при изменении поля в той же строке? В идеале этот столбец должен изначально быть установлен на время вставки строки.
Привет, Дон
Можно ли определить столбец отметки времени в таблице MySQL, который будет автоматически обновляться каждый раз при изменении поля в той же строке? В идеале этот столбец должен изначально быть установлен на время вставки строки.
Привет, Дон
Это функциональность по умолчанию для отметки времени сильный> тип столбца. Однако обратите внимание, что формат этого типа — ггггммддччммсс (все цифры, без двоеточий или других разделителей).
EDIT: Приведенный выше комментарий о формате верен только для версий MySQL ‹ 4.1... Более поздние версии форматируют его как DateTime.
Вы можете использовать столбец меток времени, как упоминалось в других плакатах. Вот SQL, который вы можете использовать для добавления столбца:
ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
Это добавляет столбец под названием «lastUpdated» со значением по умолчанию текущей даты/времени. Когда эта запись будет обновлена (скажем, через 5 минут), эта отметка времени автоматически обновится до текущего времени.
table1
ADD lastUpdated
TIMESTAMP;
- person Dónal; 02.10.2008
Это то, что я наблюдал (MySql 5.7.11) -
Первый столбец TIMESTAMP в таблице получает текущую временную метку в качестве значения по умолчанию. Таким образом, если вы выполняете INSERT или UPDATE без указания значения, столбец получит текущую отметку времени.
Любые последующие столбцы TIMESTAMP должны иметь явно заданное значение по умолчанию. Если у вас есть два столбца TIMESTAMP и вы не укажете значение по умолчанию для второго столбца, вы получите эту ошибку при попытке создать таблицу:
ОШИБКА 1067 (42000): Недопустимое значение по умолчанию для "COLUMN_NAME"
Отметка времени MySQL устанавливается с временем создания или обновления, только если их значение по умолчанию установлено как оно. ALTER TABLE some_table ADD when TIMESTAMP DEFAULT CURRENT_TIMESTAMP
.
В противном случае оно работает так же, как поле DateTime, за исключением того, что оно относится к 1970/01/01 UTC, поэтому это абсолютный момент времени, не зависящий от конкретного часового пояса, как DateTime.