我如何更改一个MySQL表列的默认值?

我有一个types为timestamp的列表,其中默认current_timestamp并在每次更新时更新为current_timestamp

我想删除此列上的“更新”function。 我如何编写alter语句?

我尝试了以下内容:

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

但是这不起作用。

多亏了感谢。

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

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

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

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

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

您不能AFAIK使用诸如NOW()这样的函数作为默认值。

尝试

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

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