2020-06-21 18:38:07
【Postgresql】 created_at, updated_at のカラムは専用のテーブルで管理したほうがいい気がした
Postgresql はテーブル作成後のカラム追加は位置が指定できない
MySQLでは AFTER でカラムの位置を指定可能ですが、 Postgresql にはそういった仕様はありません。方法としては、カラムを任意の位置に追加した新規テーブルを用意 => 既存テーブルと新規テーブルの名前を交換することにより実現するようです。
でもこれって業務でやるとしたら怖いなと思うのですよ。メンテ時間を確保できれば良いですが調整とか考えるだけで億劫になってしまいます。なので位置を指定したくないと考えますが、レコード作成日と更新日の情報を保存するためのカラムである created_at/inserted_at, updated_at の後ろにカラムは置きたくないです。そもそもこれらのカラムを管理するかしないかの議論もあるようですが今回は無視します。
created_at, updated_at は最初から別テーブルで管理すればいいのでは?
blogsテーブルでブログのタイトルや本文などの基本情報を管理して、blogtimesテーブルで created_at, updated_at などの時間情報を管理する運用を考えました。ブログに関する新しい情報を管理する為にカラムを追加する場合はblogsテーブルに追加しても created_at, updated_at の後ろに置くこともなく、安全のためにメンテ時間を確保するほどのコストを掛けずに済みます。
そもそもカラムの位置を気にしない場合は関係ない話ですが。
終わり
実践したわけではないのでどうなるか分かりません。実際に業務で行っている会社のテーブル構成も知りません。Githubで探したらもしかしたら参考になるものがあるかもしれません。