Как изменить значения по умолчанию для столбца таблицы mysql?
У меня есть таблица со столбцом типа timestamp
какие по умолчанию current_timestamp
и обновления для current_timestamp
на каждом обновлении.
Я хочу удалить функцию "при обновлении" в этом столбце. Как мне написать заявление об изменении?
Я попробовал следующее:
ALTER TABLE mytable alter column time set DEFAULT now();
но это не сработало.
2 ответа
Пит был почти прав, но использовал неверный синтаксис для "изменения":
ALTER TABLE mytable CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
Обратите внимание, что вы должны повторить имя столбца. Кроме того, убедитесь, что вы используете обратные кавычки вместо одинарных кавычек, чтобы избежать времени имени столбца, что предотвращает его интерпретацию как тип времени столбца mysql.
Если указать DEFAULT для CURRENT_TIMESTAMP, MySQL больше не будет автоматически обновлять столбец. Из руководства MySQL:
С условием DEFAULT CURRENT_TIMESTAMP и отсутствием предложения ON UPDATE столбец имеет текущую метку времени для своего значения по умолчанию, но не обновляется автоматически.
Вы не можете AFAIK использовать функции, такие как NOW() по умолчанию.
Пытаться
ALTER TABLE `mytable` CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
(Отредактировано, чтобы добавить экранирование и второе использование имени поля)