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 教程