MySQL工作台:如何设置“ON UPDATE”? 和CURRENT_TIMESTAMP?

请参阅: 更新应用程序或数据库中的时间戳列?

我试图在Workbench中build立类似的模型,但我不知道在哪里设置“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,现在等UTC?

我正在使用MySQL Workbench 5.2.35。 打开创build/更改表格面板,切换到列选项卡,右键单击时间戳字段; 在那里你可以看到可能的defaulton update选项。

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

显示上下文菜单的样本截图

关于UTC的问题,你可以看看这个问题 。 那里有一个公认的解决scheme。

我build议你阅读MySQL的参考手册以及Timestamp数据types和NOW()函数 。

以下是我使用MySQL Workbench所做的工作

数据types:TIMESTAMP默认值:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

默认情况下,MySQL在每个UPDATEINSERT语句中将第一个timestamp字段设置为CURRENT_TIMESTAMP 。 我以某种方式devise我的模式,以便updated_at是第一个timestamp字段,所以我不必明确指定它。