Правильный обходной путь - может быть только один столбец TIMESTAMP с CURRENT_TIMESTAMP в предложении DEFAULT или ON UPDATE

У меня есть эта таблица:

CREATE TABLE IF NOT EXISTS news (
  id int(11) NOT NULL AUTO_INCREMENT,
  data text,
  date_published timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  date_edited timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
);

Дайте мне эту ошибку:

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause.

Есть более старые сообщения по этой проблеме, но я хочу правильный обход из-за текущей структуры базы данных.

Версия: libmysql - 5.5.41 Работает на: 5.5.41-ubuntu.14.04.1

1 ответ

Решение

Это жесткое ограничение. Делается лучшая ставка date_edited использование CURRENT_TIMESTAMP и управление date_published в вашем приложении.

date_published timestamp NULL DEFAULT NULL,
date_edited timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

Триггеры могут быть альтернативным вариантом, но я стараюсь не полагаться на такие вещи, которые не могут легко контролироваться версиями.

Другие вопросы по тегам