NEKO BLOG

DBのカラムコメント更新

DBのカラムコメント、開発環境ではよく目にするかなと思います。

今の現場ではDBはA5SQLを利用しており、

a5m2.mmatsubara.comhttps://a5m2.mmatsubara.com/

カラム名だけで何を保存してるのかイメージがつきにくいものがあるので、コメントが多いに役立っております。(※私が英語苦手すぎるだけかもしれない)

今回タスクの中であるカラムに入る値が追加になったので、コメントも変えておこう🎵 こんな軽い気持ちでいたら、存外危険な方法しかなかったのでご紹介します。

🧐前提: そもそもコメントをどうやって確認するのか

A5SQLのようなツールを使えば、あーコメント変わってないや、、とすぐ気づけるのですが、mysqlコマンドだとどう表示されるのでしょうか。

残念ながら、show columnsではコメントが表示されません。

bash

mysql> SHOW COLUMNS FROM City;
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| ID          | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name        | char(35) | NO   |     |         |                |
| CountryCode | char(3)  | NO   | MUL |         |                |
| District    | char(20) | NO   |     |         |                |
| Population  | int(11)  | NO   |     | 0       |                |
+-------------+----------+------+-----+---------+----------------+

コメントまで確認するには、show full columnsが必要になります。

bash

mysql> SHOW FULL COLUMNS FROM City;
+-------------+----------+--------------------+------+-----+---------+----------------+---------------------------------+-------------+
| Field       | Type     | Collation          | Null | Key | Default | Extra          | Privileges                      | Comment     |
+-------------+----------+--------------------+------+-----+---------+----------------+---------------------------------+-------------+
| ID          | int      | NULL               | NO   | PRI | NULL    | auto_increment | select,insert,update,references | primary key |
| Name        | char(35) | utf8mb4_0900_ai_ci | NO   |     | NULL    |                | select,insert,update,references |             |
| CountryCode | char(3)  | utf8mb4_0900_ai_ci | NO   | MUL | NULL    |                | select,insert,update,references |             |
| District    | char(20) | utf8mb4_0900_ai_ci | NO   |     | NULL    |                | select,insert,update,references |             |
| Population  | int      | NULL               | NO   |     | 0       |                | select,insert,update,references |             |
+-------------+----------+--------------------+------+-----+---------+----------------+---------------------------------+-------------+

⚠️コメントの変更方法(ちょっと危険)

sql

ALTER TABLE City MODIFY COLUMN ID int(11) NOT NULL AUTO_INCREMENT comment 'primary key!!';

基本的にはALTER TABLEで更新ができます。ここまではいいです。

ただし、MODIFY COLUMNでコメント修正するので、 その他の制約も全部改めて指定しなおさないとコメントの更新ができません。

逆を言うと、制約を指定し忘れると、コメント更新したばかりに他の制約がリセットされかねない。そういう危険性があるコマンドです。

ただ今のところこの方法でしかコメントは変えられないようなので、どうしてもの時だけ使うのが良さそうです。

私の現場では開発環境では他の開発者の参考になるので上記の方法でコメントを更新しましたが、 STG環境・本番環境にはコメント変更を適用しない、という方法を取りました。 危険性も含めて、現場ごとに対応を決めていった方が良いかと思います。

🖊️まとめ

MySQLでカラムコメントを変更したい場合は、ALTER TABLE MODIFY COLUMNで変更は可能。

ただし設定中制約も漏れなく指定しないと、危険性が伴う。

と言うことでした。

📕参考

すごく分かりやすくまとめていただいていた記事です。 PostgreSQLではコメントだけを安全に更新するコマンドがあるようで、羨ましい限りですね。

zenn.devhttps://zenn.dev/y_satoshi/articles/article-20250620

ここまで読んでいただきありがとうございました。

これからも楽しいSQLライフを🥳