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

MySQL Workbench: как мне установить "ON UPDATE" и CURRENT_TIMESTAMP?

СМ.: Обновить столбец временной отметки в приложении или базе данных?

Я пытаюсь смоделировать что-то подобное в Workbench, но я не знаю, где установить часть "ON UPDATE". Самое лучшее, что я могу получить, это следующее:

-- -----------------------------------------------------
-- Table `foo`.`test`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `foo`.`test` ;

CREATE  TABLE IF NOT EXISTS `foo`.`test` (
  `test_id` INT NOT NULL ,
  `date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  `date_updated` TIMESTAMP NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`test_id`) )
ENGINE = InnoDB;

Где я могу перейти в Workbench, чтобы настроить эту часть ON UPDATE?

Кроме того, у меня есть правило, что все временные метки, хранящиеся в базе данных, должны быть UTC. Как сделать CURRENT_TIMESTAMP, NOW и т.д. UTC?

4b9b3361

Ответ 1

Я использую MySQL Workbench 5.2.35. Откройте панель создания/изменения таблицы, перейдите на вкладку столбцов, щелкните правой кнопкой мыши по полю метки времени; там вы можете увидеть возможные варианты default и on update.

Важное примечание. Вы можете использовать CURRENT_TIMESTAMP как значение по умолчанию или обновленное значение только для одного столбца в таблице!

Sample screenshot showing the context menu

Что касается вопроса UTC, вы можете посмотреть этот question. Там есть принятое решение.

Я бы посоветовал вам читать справочные руководства MySQL, а также для Тип данных временной отметки и NOW().

Ответ 2

Вот что я делаю с MySQL Workbench

Тип данных: TIMESTAMP По умолчанию: CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Ответ 3

По умолчанию MySQL устанавливает первое поле timestamp в CURRENT_TIMESTAMP для каждого оператора UPDATE или INSERT. Я приступаю к разработке моей схемы таким образом, чтобы updated_at был первым timestamp, поэтому мне не нужно явно указывать его.