60

我有一个表,其中有一列类型timestamp默认current_timestampcurrent_timestamp在每次更新时更新。

我想删除此列的“更新时”功能。如何编写更改语句?

我尝试了以下方法:

ALTER TABLE mytable alter column time  set DEFAULT now();

但这没有用。

4

2 回答 2

92

皮特几乎是正确的,但对“改变”使用了错误的语法:

ALTER TABLE mytable CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

请注意,您必须重复列名。此外,请确保您使用反引号而不是单引号来转义列名时间,这可以防止它被解释为 mysql 时间列类型。

通过指定 CURRENT_TIMESTAMP 的 DEFAULT,MySQL 将不再自动更新该列。来自MySQL 手册

使用 DEFAULT CURRENT_TIMESTAMP 子句且没有 ON UPDATE 子句时,该列的默认值具有当前时间戳,但不会自动更新。

于 2009-11-20T14:28:35.130 回答
12

您不能 AFAIK 使用 NOW() 等函数作为默认值。

尝试

ALTER TABLE `mytable` CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

(编辑添加转义和第二次使用字段名称)

于 2009-11-20T12:58:00.000 回答