如何更改 mysql 表列默认值?

发布于 2024-08-11 21:47:17 字数 278 浏览 13 评论 0原文

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

我想删除此列上的“更新时”功能。怎样写alter语句呢?

我尝试了以下操作:

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

但这不起作用。

I have a table with a column of type timestamp which defaults current_timestamp and updates to current_timestamp on every update.

I want to remove the "on update" feature on this column. How do I write the alter statement?

I tried the following:

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

but this didn't work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

删除会话 2024-08-18 21:47:17

Pete 几乎是正确的,但使用了错误的“更改”语法:

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

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

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

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

Pete was almost correct but used the wrong syntax for 'change':

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

Notice that you must repeat the column name. Also, make sure you are using backticks instead of single quotes to escape the column name time, which prevents it from being interpreted as the mysql column type of time.

By specifying the DEFAULT of CURRENT_TIMESTAMP, MySQL will no longer automatically update the column. From the MySQL Manual:

With a DEFAULT CURRENT_TIMESTAMP clause and no ON UPDATE clause, the column has the current timestamp for its default value but is not automatically updated.

享受孤独 2024-08-18 21:47:17

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

尝试

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

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

You can't AFAIK use functions such as NOW() as a default.

Try

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

(Edited to add escaping and second use of field name)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文