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?
Ответы
Ответ 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
, поэтому мне не нужно явно указывать его.