У меня в таблице есть такой столбец:
date_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Я заметил, что когда я пытаюсь обновить строку той же информацией, временная метка не меняется.
Например, моя таблица (пользователи) такая:
+----+-------+----------------+-----------+-------------+
| id | name | food | confirmed | signup_date |
+----+-------+----------------+-----------+-------------+
| 1 | John | Casserole | Y | 2012-04-11 12:46:55 |
| 2 | Sandy | Key Lime Tarts | N | 2012-04-14 11:02:02 |
+----+-------+----------------+-----------+-------------+
Когда я запускаю этот запрос, все работает нормально (signup_date обновляется, как и ожидалось):
UPDATE users SET name = 'new', food = 'new' where id = 1;
Однако, когда я запускаю это (вставляя точную информацию), signup_date остается таким же, как и предыдущий:
UPDATE users SET name = 'John', food = 'Casserole' where id = 1;
Мне нужна помощь с обновлением signup_date независимо от того, совпадает ли информация или нет. Кто может помочь?






UPDATE users SET name = 'new', food = 'new',signup_date = Now() where id = 1;
Может быть, вы могли бы попробовать обновить столбец с помощью Now ()?
Просто хотел добавить, если вы действительно действительно хотите сделать это без добавления этого обновления одного столбца. посмотрите на triggers.
Да спасибо. Решил пойти с column = current_timestamp
Прочитать документация
если значение не изменится, автоматическое обновление не запустится. вы легко можете попробовать это сами.
запрос обновления MYSQL должен быть следующим
ALTER TABLE users
CHANGE COLUMN `signup_date` `signup_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
но я предлагаю сохранить поле времени обновления в другом поле, например, «modified_date», чтобы вы могли отслеживать как дату регистрации, так и дату последнего изменения
Хорошее предложение о добавлении отдельного столбца, но проблема не в определении столбца. Определение его с помощью NULL также обычно является плохой идеей, потому что вы не можете принудительно установить текущее время, установив для столбца значение NULL, а стирание данных временной метки редко бывает полезным.
Я попробовал, и это работает, но я не хочу это уточнять. Я ожидаю, что он будет обновлен автоматически, поскольку я указываю в своем заявлении, что он должен обновляться.