是否可以在MySQL表中定义一个时间戳列,每次修改同一行中的字段时,该列都会自动更新?理想情况下,此列最初应设置为插入行的时间。

干杯, 唐

其他提示

您可以使用timestamp列作为其他提到的海报。以下是可用于添加列的SQL:

ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

这会添加一个名为“lastUpdated”的列,其默认值为当前日期/时间。当该记录更新时(比如5分钟后),该时间戳将自动更新为当前时间。

这是我观察到的(MySql 5.7.11) -

表中的第一个TIMESTAMP列将当前时间戳作为默认值。因此,如果在不提供值的情况下执行INSERT或UPDATE,则列将获取当前时间戳。

任何后续TIMESTAMP列都应具有显式定义的默认值。如果您有两个TIMESTAMP列,并且如果没有为第二列指定默认值,则在尝试创建表时会出现此错误 -

错误1067(42000):“COLUMN_NAME”

的默认值无效

只有在设置默认值时,才会使用创建或更新时间设置MySQL时间戳。 ALTER TABLE some_table ADD when TIMESTAMP DEFAULT CURRENT_TIMESTAMP。结果 否则它就像DateTime字段一样,只是它相对于1970/01/01 UTC,所以它是一个绝对的时间点,不依赖于特定的时区,就像DateTime一样。

IIRC,创建记录时无法更改记录类型为timestamp的表中的第一列。每当更新记录时,都会设置第二列类型timestamp。反之亦然。

我没有做太多的MySQL工作,所以你需要验证这一点。

scroll top