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

我想删除本专栏的"更新"功能.如何编写alter语句?

我try 了以下方法:

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

但这不管用.

推荐答案

皮特几乎是对的,但对"改变"使用了错误的语法:

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

请注意,必须重复列名.此外,请确保使用反勾号而不是单引号来转义列名time,这会防止它被解释为mysql列类型的time.

通过指定当前时间戳的默认值,MySQL将不再自动更新列.从MySQL Manual人中:

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

Mysql相关问答推荐

在联合查询中使用GROUP BY和ORDER BY

左联接重复问题

如何在 MySQL 中对同一个表的多个列进行 INNER JOIN

Group By 查询运行速度太慢而无法正常运行

如何在 Shopware 6 DAL 中实施 Haversine 公式?

为生日创建 MySQL 索引

JOOQ:如何将 POJO 列序列化为 JSON

即使我的约束是正确的,如何解决 errno: 150 外键约束形成错误?

MYSQL LOAD DATA INFILE 语句适用于工作台,但不适用于 python

Select 在同一天售出不同活动门票的收银员

MySQL:使用来自查询的信息创建一个新表

MySql 以秒为单位的两个时间戳之间的差异?

授予用户对 MySQL 中有限数量表的访问权限

在mysql中增量更新值

基于字符串动态创建 PHP 对象

我可以在单个 Amazon RDS 实例上创建多少个数据库

MySQL - 我如何输入 NULL?

Ubuntu 中的 MySQL JDBC jar 文件在哪里?

启用 NO_BACKSLASH_ESCAPES 选项时如何转义文字百分号?

匹配 IN 子句中的所有值