如何在 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+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告