MySQL Workbench:如何设置“ON UPDATE”?和CURRENT_TIMESTAMP?

时间:2011-11-19 12:50:57

标签: mysql timestamp utc mysql-workbench

参见:Update timestamp column in Application or Database?

我正在尝试在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?

3 个答案:

答案 0 :(得分:120)

我正在使用MySQL Workbench 5.2.35。打开create / alter table面板,切换到columns选项卡,右键单击timestamp字段;在那里,您可以看到可能的defaulton update选项。

重要提示:您可以将CURRENT_TIMESTAMP用作表格中单个列的默认值或更新值!

Sample screenshot showing the context menu

关于UTC问题,您可以查看此question。那里有一个公认的解决方案。

我建议你阅读Timestamp data typeNOW() function的MySQL参考手册。

答案 1 :(得分:6)

以下是我对MySQL Workbench的处理方法

数据类型:TIMESTAMP 默认值:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

答案 2 :(得分:-2)

默认情况下,MySQL会在每个timestampCURRENT_TIMESTAMP语句中将第一个UPDATE字段设置为INSERT。我以一种方式设计我的架构,以便updated_at是第一个timestamp字段,这样我就不必明确指定它。