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

Posted

技术标签:

【中文标题】MySQL Workbench:如何设置“ON UPDATE”和 CURRENT_TIMESTAMP?【英文标题】:MySQL Workbench: how do I set up "ON UPDATE" and CURRENT_TIMESTAMP? 【发布时间】:2012-01-01 21:50:09 【问题描述】:

查看: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?

【问题讨论】:

对于任何感兴趣的人,我创建了一个Workbench script,它会自动在所有表上添加时间戳列 - 除了数据透视表 【参考方案1】:

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

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

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

我建议您阅读 MySQL 参考手册以及 Timestamp data type 和 NOW() function。

【讨论】:

好的,这对我有用。如果我想知道记录何时被软删除,我只需创建一个 date_deleted 并从应用程序层设置它,对吗?另外,对 UTC 问题有任何想法吗? 是的,如果您已经在运行查询以将项目标记为软删除,那么最好在同一查询(或至少同一事务)中从应用程序层更新日期。我更新了 UTC 问题的答案。 @carbonr 您是否阅读了答案上的“重要说明”,这是您要问的还是您要问的其他问题? 感谢您的回答!为我工作 一个小附录:对我来说,我必须指定 Not Null NN 才能从 UI 自动更新(Workbench 6.0.8)【参考方案2】:

这是我使用 MySQL Workbench 所做的事情

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于MySQL Workbench:如何设置“ON UPDATE”和 CURRENT_TIMESTAMP?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL Workbench 中使默认 blob 成为图像?

mysql workbench怎么远程连接阿里云数据库

如何用MySQL workbench查询数据

MySQL workbench 界面显示语言怎么设置成中文

MySQL Workbench 深色主题

mysql workbench设置字段的唯一索引