Подтвердить что ты не робот

MySQL автоматически хранит дату и время для каждой строки

В MySQL мне больно добавлять столбцы dt_created и dt_modified (которые являются метками даты для создания и последнего изменения соответственно) ко всем таблицам, которые у меня есть в моей базе данных.

Каждый раз, когда я INSERT или UPDATE базы данных, мне нужно будет использовать ключевое слово NOW(). Это происходит из-за моей настойчивости.

Есть ли эффективная альтернатива, где MySQL может автоматически сохранять по крайней мере время хранения строки, которая вставлена, и позволить мне ее получить?

4b9b3361

Ответ 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