PostgreSQLの列挙項目の名前を変更する 質問する

PostgreSQLの列挙項目の名前を変更する 質問する

PostgreSQL 9.1.5 の列挙型内の項目の名前を変更したいと思います。

型の作成ステートメントは次のとおりです。

CREATE TYPE import_action AS ENUM
('Ignored',
'Inserted',
'Updated',
'Task created');

「タスク作成」を「中止」に変更したいだけです。ドキュメンテーション、次の方法が機能するはずです:

ALTER TYPE import_action
RENAME ATTRIBUTE "Task created" TO "Aborted"; 

しかし、次のようなメッセージが届きます:

********** Error **********

ERROR: relation "import_action" does not exist
SQL state: 42P01

しかし、それは明らかに存在します。

この型は現在複数のテーブルで使用されています。

これを行う方法はないはずだと考え始めています。pgAdminIII でそのタイプのダイアログを試してみましたが、名前を変更する方法が見つかりません。(つまり、私にはできないという強いヒントか、あるいは、そのダイアログを作成した開発者の小さな見落としであることを願っています)

これを 1 つのステートメントで実行できない場合は、何をする必要がありますか? アイテムを追加し、すべてのレコードを新しい値に更新してから、古いアイテムを削除するスクリプトを作成する必要がありますか? それは機能しますか?

これは単純なことのように思えます。私の理解では、レコードはタイプとアイテムへの参照を保存しているだけです。私が指定したテキスト値を実際に保存しているとは思いません。しかし、ここでも私が間違っているかもしれません。

ベストアンサー1

PostgreSQLバージョン10では、列挙型のラベルの名前を変更する機能が追加されました。追加されましたの一環としてタイプの変更構文:

ALTER TYPE name RENAME VALUE 'existing_enum_value' TO 'new_enum_value'

おすすめ記事