it-swarm.com.ru

MySQL: обновление записи без обновления метки времени

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

63
user114060

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

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

DEFAULT CURRENT_TIMESTAMP

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

43
OMG Ponies

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

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

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

122
Andy

Чтобы сделать автоматическое обновление таблицы/отметки времени:

ALTER TABLE myTable
CHANGE myTimestampColumn
        myTimestampColumn TIMESTAMP NOT NULL
                       DEFAULT CURRENT_TIMESTAMP 
                       ON UPDATE CURRENT_TIMESTAMP;

Чтобы сделать этоnotauto-update:

ALTER TABLE myTable
CHANGE myTimestampColumn
        myTimestampColumn TIMESTAMP NOT NULL
                       DEFAULT CURRENT_TIMESTAMP;

ПРИМЕЧАНИЕ. Часть «default current_timestamp» по умолчанию просто устанавливает текущую отметку во время по умолчанию, так как поле не является нулевым. Вы можете удалить как not null, так и значение по умолчанию, если хотите.

19
Olie

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

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

UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
9
knittl

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

SET LastUpdatedDate=NOW() WHERE

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

0
Pini Cheyni