У меня есть таблица, где у меня есть столбец date
. Есть ли способ, чтобы MySQL автоматически заполнял это поле всякий раз, когда я вставляю новый реестр с текущей датой? Или это делается автоматически по умолчанию?
P.S.: Я использую PHPMyAdmin
У меня есть таблица, где у меня есть столбец date
. Есть ли способ, чтобы MySQL автоматически заполнял это поле всякий раз, когда я вставляю новый реестр с текущей датой? Или это делается автоматически по умолчанию?
P.S.: Я использую PHPMyAdmin
К сожалению, MySQL не позволяет указывать значения, отличные от констант, в качестве значений по умолчанию для столбцов, отличных от TIMESTAMP
.
Эта функция доступна в версиях MySQL 8. 0+, но для более старых версий единственным решением для базы данных, определенной по умолчанию, будет использование триггера.
Хотя это старый пост, возможно, этот образ поможет, поскольку он более явный: (Для пользователей phpMyAdmin)
Эта конфигурация устанавливает это поле со значением, как:
2015-12-11 07:50:47
PS: Обратите внимание, что временная метка задает время вашего сервера! (т.е. пример выше получил время из Pacific Time (07:50:47), но это могло быть от испанского пользователя в 16:50:47 по местному времени). Имейте это в виду.
Кроме того, если у вас уже есть "Дата создания", вам может понадобиться другой столбец, который обновляет дату изменения всякий раз, когда появляется обновление: Вам нужно только установить при обновлении CURRENT TIME STAMP в поле Attributes.
Готовый рок!
Установите значение по умолчанию в запрос mySql
CURRENT_TIMESTAMP
вы должны использовать
now()
где вы хотите заполнить текущее время.
то есть:.
INSERT INTO user_rights (`user_id`,`right`,`group_id`,`created_date`) VALUES ( '42', '160', '1', now());
Я понимаю, что это не может быть прямым ответом на вопрос, но я считаю, что это наиболее приемлемое решение.
Я настоятельно рекомендую использовать тип данных DATETIME или TIMESTAMP для рассматриваемого столбца.
Если вы используете довольно текущую версию MySQL, MySQL сделает для вас работу.
Подробнее:
Чтобы быть предельно ясным, начиная с 5.6.5, для типов данных TIMESTAMP и DATETIME вы можете сделать следующее:
Вот как:
Пример в инструкции CREATE TABLE:
CREATE TABLE t1 (
ts1 DATETIME ON UPDATE CURRENT_TIMESTAMP
,ts2 DATETIME DEFAULT NOW()
);
Обратите внимание, что DATETIME может быть заменен на TIMESTAMP для эффективной работы с теми же функциями.
Кроме того, я предлагаю использовать тип данных DATETIME над TIMESTAMP, поскольку DATETIME имеет гораздо больший диапазон дат, которые он может поддерживать. Стоит отметить, что TIMESTAMP меньше для тех немногих случаев, которые имеют значение.
Подробнее читайте здесь: fooobar.com/questions/481238/...
Вы можете сделать что-то подобное на экране SQL
ALTER TABLE `table_name` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL
Я добавил это в свою таблицу, и она работает
ALTER TABLE Medewerkers ADD med_created TIMESTAMP DEFAULT now();
Когда вы вставляете данные в свою запись, она автоматически обновляет med_created