MySQL: обновление записи без обновления метки времени - PullRequest
65 голосов
/ 16 мая 2010

У меня есть метка времени в таблице mysql с атрибутом «ON UPDATE CURRENT_TIMESTAMP». Есть ли способ вручную отключить обновление отметки времени в особом случае? (например: обновить запись, чтобы пересмотреть сообщение в блоге, но не обновлять его)

Ответы [ 5 ]

124 голосов
/ 16 мая 2010

Вы можете вручную установить значение столбца на его текущее значение в команде обновления:

UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;

Если вы не установите значение в запросе, оно будет обновлено до текущей отметки времени согласно определению таблицы.

44 голосов
/ 16 мая 2010

Есть ли способ вручную отключить обновление отметки времени в особом случае?(например: обновление записи для изменения записи в блоге, но не для ее обновления)

Похоже, вам нужно настроить ограничение по умолчанию, чтобы оно заполняло столбец только при вставке:

DEFAULT CURRENT_TIMESTAMP

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

20 голосов
/ 29 июля 2015

Для автоматического обновления таблицы / отметки времени:

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» по умолчанию просто устанавливает ее в текущую отметку во время по умолчанию, поскольку поле не является нулевым. При желании вы можете удалить как not null, так и значение по умолчанию.

9 голосов
/ 16 мая 2010

не используют временные метки, но отслеживают время вручную.

, если вы действительно хотите обновить запись и не обновлять ее с использованием метки времени:

UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
0 голосов
/ 27 октября 2015

Если вы измените временную метку при обновлении, вы должны принять во внимание, что если значение было обновлено, но не изменено (обновлено значение сохранения), то оно не будет обновлять «при обновлении Current_timestemp», и в этой ситуации вам следует установить временную метку вручную

SET LastUpdatedDate=NOW() WHERE

Идея пришла отсюда: Нажмите MYSQL-запись, чтобы обновить поле TIMESTAMP

...