如何在 MySQL 中删除现有列上的 ON UPDATE CURRENT_TIMESTAMP?


ON UPDATE CURRENT_TIMESTAMP 定义了在没有显式时间戳的情况下更新将导致更新为当前时间戳值。

您可以使用 ALTER 命令从列中删除 ON UPDATE CURRENT_TIMESTAMP。

语法如下所示

ALTER TABLE yourTableName
CHANGE yourTimeStampColumnName yourTimeStampColumnName timestamp NOT
NULL default CURRENT_TIMESTAMP;

为了理解上述语法,让我们创建一个表。创建表的查询如下所示

mysql> create table removeOnUpdateCurrentTimeStampDemo
   - > (
   - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   - > Name varchar(20),
   - > UserUpdateTimestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
   - > );
Query OK, 0 rows affected (0.54 sec)

使用 DESC 命令检查表的描述。

查询如下所示

mysql> desc removeOnUpdateCurrentTimeStampDemo;

以下是输出

+---------------------+-------------+------+-----+-------------------+-----------------------------+
| Field               | Type        | Null | Key | Default           | Extra                       |
+---------------------+-------------+------+-----+-------------------+-----------------------------+
| Id                  | int(11)     | NO   | PRI | NULL              | auto_increment              |
| Name                | varchar(20) | YES  |     | NULL              |                             |
| UserUpdateTimestamp | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+---------------------+-------------+------+-----+-------------------+-----------------------------+
3 rows in set (0.04 sec)

现在查看 Extra 字段,其中有 on update CURRENT_TIMESTAMP。删除 ON UPDATE CURRENT_TIMESTAMP 的查询如下所示

mysql> alter table removeOnUpdateCurrentTimeStampDemo
   - > change UserUpdateTimestamp UserUpdateTimestamp timestamp NOT NULL default CURRENT_TIMESTAMP;
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

再次检查表的描述。

查询如下所示

mysql> desc removeOnUpdateCurrentTimeStampDemo;

以下是输出

+---------------------+-------------+------+-----+-------------------+----------------+
| Field               | Type        | Null | Key | Default           | Extra          |
+---------------------+-------------+------+-----+-------------------+----------------+
| Id                  | int(11)     | NO   | PRI | NULL              | auto_increment |
| Name                | varchar(20) | YES  |     | NULL              |                |
| UserUpdateTimestamp | timestamp   | NO   |     | CURRENT_TIMESTAMP |                |
+---------------------+-------------+------+-----+-------------------+----------------+
3 rows in set (0.00 sec)

如果要删除默认的 CURRENT_TIMESTAMP,则查询如下所示

mysql> alter table removeOnUpdateCurrentTimeStampDemo
   - > change UserUpdateTimestamp UserUpdateTimestamp timestamp NOT NULL;
Query OK, 0 rows affected (0.12 sec)
Records: 0 Duplicates: 0 Warnings: 0

再次检查表的描述。

查询如下所示

mysql> desc removeOnUpdateCurrentTimeStampDemo;

以下是输出

+---------------------+-------------+------+-----+---------+----------------+
| Field               | Type        | Null | Key | Default | Extra          |
+---------------------+-------------+------+-----+---------+----------------+
| Id                  | int(11)     | NO   | PRI | NULL    | auto_increment |
| Name                | varchar(20) | YES  |     | NULL    |                |
| UserUpdateTimestamp | timestamp   | NO   |     | NULL    |                |
+---------------------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

现在查看上面的示例输出,我们已经删除了 ON UPDATE CURRENT TIMESTAMP。

更新于: 2019-07-30

4K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告