我有一个表,其中有一列类型timestamp
默认current_timestamp
并current_timestamp
在每次更新时更新。
我想删除此列的“更新时”功能。如何编写更改语句?
我尝试了以下方法:
ALTER TABLE mytable alter column time set DEFAULT now();
但这没有用。
皮特几乎是正确的,但对“改变”使用了错误的语法:
ALTER TABLE mytable CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
请注意,您必须重复列名。此外,请确保您使用反引号而不是单引号来转义列名时间,这可以防止它被解释为 mysql 时间列类型。
通过指定 CURRENT_TIMESTAMP 的 DEFAULT,MySQL 将不再自动更新该列。来自MySQL 手册:
使用 DEFAULT CURRENT_TIMESTAMP 子句且没有 ON UPDATE 子句时,该列的默认值具有当前时间戳,但不会自动更新。
您不能 AFAIK 使用 NOW() 等函数作为默认值。
尝试
ALTER TABLE `mytable` CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
(编辑添加转义和第二次使用字段名称)