ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PostgreSQLでカラムのデータ型を変換する際に気がついたこと

現在開発中のシステムで、数値型でよかったカラムが、文字型にしないと不都合だということが発覚しました。
カラムを消して、新しいカラムとして定義しなおすことも考えましたが、

  • 主キーになっているので、手間がかかりそう。
  • テストデータがそこそこ登録済みで、できればデータを残したい。

という状況だったので、カラムのデータ型の定義を変更できるか試してみました。

変更する前はinteger型で、変更後はcharacter varying型です。

PgAdminIIIのGUIから変更

PgAdminIIIで、テーブル定義のプロパティを開いてカラムのデータ型を変更しようとしましたが、character varying型は表示されませんでした。

SQLで変更

GUIで変更できなかったので、SQLで変更できないかもと、なかば諦めつつ、

ALTER TABLE test_table ALTER COLUMN test_column TYPE character varying;

を実行したら、変更できました。

今回わかったこと

  • GUIでカラムのデータ型が変更できなくても、SQLではできる場合があるので、SQLを試すほうが無駄がない。
  • 変更したいカラムが主キーになっていても、変更ができる。

の2点です。