MySQLのデータベースに更新日時を追加した記録

flaskとMySQLの接続を引き続き、継続中です。

flaskで、更新日時の表示をする必要があったため、

timestampのカラムを追加することにしました。

環境

Mac 10.15.4

Server version: 8.0.19 Homebrew

現状

現状のデータベースはこんな感じです。

mysql> select * from sentence;
+----+-----------------------------------------------+
| id | poem                                          |
+----+-----------------------------------------------+
|  1 | To be, or not to be: that is the question…1   |
+----+-----------------------------------------------+

やりたいことは、【Field:更新日】を追加することです。

mysql> show columns from sentence;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| id    | int  | NO   | PRI | NULL    |       |
| poem  | text | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+

alterでカラムの追加

記述は以下のとおりです。

【sentence】の部分をそれぞれのテーブル名に変更してください。

mysql> alter table 【sentence】 add updatetime timestamp default current_timestamp on update current_timestamp;

OKがでたので、selectでチェックします。

mysql> select * from sentence;
+----+-----------------------------------------------+---------------------+
| id | poem                                          | updatetime          |
+----+-----------------------------------------------+---------------------+
|  1 | To be, or not to be: that is the question…1   | 2020-07-22 02:16:28 |
+----+-----------------------------------------------+---------------------+

無事に追加が確認できました。

念のため、Fieldもデータベースも確認します。

+------------+-----------+------+-----+-------------------+-----------------------------------------------+
| Field      | Type      | Null | Key | Default           | Extra                                         |
+------------+-----------+------+-----+-------------------+-----------------------------------------------+
| id         | int       | NO   | PRI | NULL              |                                               |
| poem       | text      | YES  |     | NULL              |                                               |
| updatetime | timestamp | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
+------------+-----------+------+-----+-------------------+-----------------------------------------------+

ポイントは、

default:CURRENT_TIMESTAMP

extra:DEFAULT_GENERATED on update CURRENT_TIMESTAMP

と設定されていること。

まとめ

更新日時のカラムを追加するときは、alterを使います。

timestampがしっかり設定されるように注意してください。

こんな簡単なのに、私は解決するまでに2時間くらいかけてしいまいました…。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA