MySQL 如何从现有列中删除ON UPDATE CURRENT_TIMESTAMP

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;

输出如下所示

+---------------------+-------------+------+-----+---------+----------------+
| 字段                 | 类型         | 是否为空 | 键  | 默认值   | 其他             |
+---------------------+-------------+------+-----+---------+----------------+
| Id                  | int(11)     | 否   | 主键 | NULL    | 自增           |
| 名称                | varchar(20) | 是   |     | NULL    |                |
| UserUpdateTimestamp | timestamp   | 否   |     | NULL    |                |
+---------------------+-------------+------+-----+---------+----------------+
共 3 行记录(0.00 秒)

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

阅读更多:MySQL 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程