У меня есть метка времени в таблице mysql с атрибутом "ON UPDATE CURRENT_TIMESTAMP". Есть ли способ вручную отключить обновление временной метки по особому случаю? (например: обновить запись, чтобы пересмотреть запись в блоге, но не переписывать ее)
Обновление записи БЕЗ обновления метки времени
Ответ 1
Есть ли способ вручную отключить обновление метки времени по особому случаю? (например: обновить запись, чтобы пересмотреть запись в блоге, но не переписывать ее)
Похоже, вам нужно настроить ограничение по умолчанию, чтобы он заполнял столбец только при вставке:
DEFAULT CURRENT_TIMESTAMP
Изменение этого только означает, что любые изменения не будут вызывать значение временной метки, которое будет обновляться. IE: Если вы вчера создали блог-блог и исправили опечатку сегодня - дата в столбце все равно будет на вчера.
Ответ 2
Вы можете вручную установить значение столбца в текущее значение в команде обновления:
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
Если вы не установите значение в запросе, оно будет обновлено до текущей метки времени в соответствии с определением таблицы.
Ответ 3
Чтобы автоматическое обновление вашей таблицы/метки времени:
ALTER TABLE myTable
CHANGE myTimestampColumn
myTimestampColumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
Чтобы сделать это не автоматическое обновление:
ALTER TABLE myTable
CHANGE myTimestampColumn
myTimestampColumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP;
ПРИМЕЧАНИЕ. Параметр "default current_timestamp" просто устанавливает его на текущий штамп по умолчанию, так как поле не равно-null. Вы можете удалить как ненулевые, так и по умолчанию, если хотите.
Ответ 4
не используйте временные метки, но отслеживайте время вручную.
если вы действительно хотите обновить запись и не обновлять ее временную метку:
UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
Ответ 5
Если вы измените временную метку при обновлении, вам следует учесть, что если значение было обновлено, но не изменено (обновлено значение сохранения), то оно не будет обновлять "при обновлении Current_timestemp", и в этой ситуации вы должны установить временную метку вручную
SET LastUpdatedDate=NOW() WHERE
Идея пришла отсюда: Коснитесь записи MYSQL, чтобы обновить поле TIMESTAMP.