【MySQL】カラムに更新日時を追加する方法。timestamp設定時の注意点

MySQL カラムに更新日時を追加しようの巻
お悩みさん

MySQLのテーブルに更新日時を付け足したい〜

例えば、Webアプリで、最終更新日というような表記がでてくるときがあります。

そんな表記を出すには、MySQLの更新時間を引っ張ってくれば実装ができます。

僕もFlaskを使ってプログラミングをしている際、更新日時の表示をする必要があったため、

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

この記事で学べること
  1. カラムに更新日時の追加方法
  2. timestampのチェックすべきこと

環境

OSMac 10.15.4
Pythonpython 3.9
仮想環境Poetry
Homebrew8.0.19 Homebrew
目次

テーブルのカラムを確認

現状のMySQLのテーブルは以下です。

sentenceというテーブルに、idと、poemのカラムを作成しています。

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

続いて、テーブルのカラムをチェックしてみます。

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

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

alterを使って、カラムの追加

更新日のからを追加する方法は以下のとおりです。

[テーブル名]の部分を各々のテーブル名に変更してください。

mysql> alter table テーブル名 add updatetime timestamp default current_timestamp on update current_timestamp;

実行できたら、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

ExtraDEFAULT_GENERATED on update CURRENT_TIMESTAMP

と設定されていることを確認してください。

まとめ

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

それから、timestampのDefault、Extraがしっかり設定されるように注意してください。

ちなみに、こんな簡単なのに、私が初めてやったときは2時間かかってしまいました…。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

節約に励むマーケターです!30歳を機に別職種から、マーケターにキャリアチェンジ。IT企業で専任のマーケターをしています。0からプログラミングを学びはじめました! ★データサイエンティストの勉強中です!お問合せはこちら!

コメント

コメントする

CAPTCHA


目次