У мене є мітка часу в таблиці mysql з атрибутом "ON UPDATE CURRENT_TIMESTAMP". Чи є спосіб вручну вимкнути оновлення позначки часу з особливої нагоди? (наприклад: оновлення запису для перегляду допису в блозі, але не для повторного датування)
Відповіді:
Чи є спосіб вручну вимкнути оновлення позначки часу з особливої нагоди? (наприклад: оновлення запису для перегляду допису в блозі, але не для повторного датування)
Здається, вам потрібно налаштувати обмеження за замовчуванням так, щоб воно заповнювало стовпець лише при вставці:
DEFAULT CURRENT_TIMESTAMP
Якщо змінити його лише на це, це означає, що будь-які редакції не ініціюватимуть оновлення значення позначки часу. IE: Якби ви створили допис у блозі вчора, а сьогодні виправили помилку - дата у стовпці все одно буде вчора.
last_updated
поле (зберегти ON UPDATE CURRENT_TIMESTAMP
поведінку) як зазвичай, крім випадків, коли оновлення було зроблено лише в одному конкретному стовпці ? Насправді я моделюю db метаданих, щоб зберегти інформацію певних cron
s (їх джерело, помилка, last_completion_time ). Отже, я last_updated
поле мушу оновлювати лише тоді, коли cron було фактично змінено (а не коли last_completion_time
поле cron оновлено)
Ви можете вручну встановити значення стовпця на поточне значення в команді оновлення:
UPDATE table SET x=y, timestampColumn=timestampColumn WHERE a=b;
Якщо ви не встановите значення у запиті, воно буде оновлено до поточної позначки часу відповідно до визначення таблиці.
ON UPDATE
, додати NOW()
до всіх інших його запитів і протестувати свою програму?
DEFAULT
значення; простоON UPDATE
Щоб зробити автоматичне оновлення таблиці / мітки часу:
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_timestamp" за замовчуванням просто встановлює для неї поточний штамп, оскільки поле не є нульовим. Ви можете видалити як null, так і за замовчуванням, якщо хочете.
не використовуйте мітки часу, а відстежуйте час вручну.
якщо ви дійсно хочете оновити запис і не оновлюєте його позначку часу:
UPDATE `table` SET `timestamp` = `timestamp`, `col` = 'new data' …;
Якщо ви все-таки змінили часову шкалу під час оновлення, вам слід взяти до уваги, що якщо значення було оновлено, але не змінено (оновлено значення збереження), воно не оновить параметр "on update Current_timestemp", і в цій ситуації вам слід встановити часовий інтервал вручну
SET LastUpdatedDate=NOW() WHERE
Ідея виникла звідси: торкніться запису MYSQL, щоб оновити поле TIMESTAMP