0

我需要有关on updateMySQL 的帮助。

目前我需要在一个有关联的表中设置一个createdupdated行。documentskeywordsForeign Key

所以我为关键字创建了一个触发器来更新updated相关文档的时间,我需要为Documents表创建另一个触发器。

问题是我是否可以使用on update而不是触发器。

我尝试搜索关于on update语句以查看它是否指的是正在更新的整个记录​​,可以使用多少列等,但我没有找到任何 MySQL 文档的主题。

任何帮助都感激不尽。

4

1 回答 1

0

为了实现这个问题,您不需要使用触发器。那是因为created一劳永逸地编写具有逻辑意义。NOW()所以你会在插入行时传递类似的东西。

现在,对于updated,它具有上次更改时间戳的逻辑含义- 然后通过定义时间戳字段,您可以指定ON UPDATE CURRENT_TIMESTAMP子句:

CREATE TABLE t1 (   
  s TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,   
  dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );

-而已。即,在更新事件的常见情况下,您必须使用触发器,当 MySQL 提供内置解决方案时就是这种情况。多说一句,当你期望使用它时就是这种情况——也就是说,这就是它存在于 MySQL 中的原因。

问题“何时”的常见答案是基于意见的,但逻辑“更新日期”的实施是一般目的。

于 2013-10-21T13:03:13.327 回答