テーブルにvarcharカラムがあり、enumタイプにアップグレードする必要があります。postgresqlでvarcharカラムを列挙型にアップグレードする
varchar列のすべての値は、列挙の有効な値です。 varcharカラムにはnull値はありません。
ALTER TABLE tableName
ALTER COLUMN varcharColumn TYPE enum_type
ERROR:列挙型を持つ別の新しい列を作成します
- に42804
方法についてラウンドは:コラム "varcharColumnは" enum_type SQL状態を型にキャストすることはできません。
- タイプキャスト後に列挙型の列をvarchar列で更新します。
- varcharカラムを削除します。
- 列挙型の列名をvarchar列の名前に変更します。
これを実現する方法はありますか?
ありがとうございます。
また、ルックアップテーブルや単純な制約付きの列ではなく、一部のクライアントアプリケーションで作業する場合、列挙型の問題もより深刻です。 JPA/Hibernateの列挙型を使って作業するという嫌な喜びを持っている人は誰もが知っています。 –
ありがとうa_horse_with_no_name!ドキュメントから解決策を見つけましたが、あなたの説明は非常に包括的かつ有用です。 – Gopal
私は最近、列挙型をスキーマに移動することによって列挙型を再構成する必要がありました。そのため、列挙型に依存するテーブルは、列挙型の新しい場所を指すように型を変更する必要がありました。私は次のようにダブルキャストでそれを行いました: 'alter table my_schema.my_column alter column sale_item_status type my_schema.my_column_enum ((my_column :: text):: my_schema.my_column_enum)' - この性質の「問題」 –