MySQL автоматически хранит дату и время для каждой строки
В MySQL мне больно добавлять столбцы dt_created
и dt_modified
(которые являются метками даты для создания и последнего изменения соответственно) ко всем таблицам, которые у меня есть в моей базе данных.
Каждый раз, когда я INSERT
или UPDATE
базы данных, мне нужно будет использовать ключевое слово NOW()
. Это происходит из-за моей настойчивости.
Есть ли эффективная альтернатива, где MySQL может автоматически сохранять по крайней мере время хранения строки, которая вставлена, и позволить мне ее получить?
Ответы
Ответ 1
Вы можете использовать ограничения DEFAULT для установки отметки времени:
ALTER TABLE
MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP
ALTER TABLE
MODIFY dt_modified datetime DEFAULT ON UPDATE CURRENT_TIMESTAMP
Тогда вам не нужно указывать NOW()
в ваших инструкциях INSERT/UPDATE.
Ссылка: Свойства TIMESTAMP
Ответ 2
Если вы используете phpmyadmin, вы можете сделать это:
![enter image description here]()
Ответ 3
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
должен быть правильный код.
Ответ 4
Ну, вы не можете иметь оба:
mysql doc:
Невозможно, чтобы текущая временная метка была значением по умолчанию для одного столбца и значением автоматического обновления для другого столбца.
Печально, не так ли?
Вместо этого вы можете использовать null вместо now() после этого совета
Ответ 5
Аналогичный вопрос задавался здесь Timestamp for MySQL "поле timestamp будет обновляться каждый раз, когда к нему обращаются. Вы также можете рассмотреть Trigger, помещенный в соответствующую таблицу, чтобы автоматически заполнить эти поля для вас. В зависимости от среды некоторые магазины/предприятия не любят использование триггеров, поэтому вам, возможно, придется искать альтернативную работу.
Ответ 6
В phpmyadmin вы можете установить
![enter image description here]()
ИЛИ
используйте этот запрос
ALTER TABLE `tablename`
CHANGE `dt_created` `dt_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP