2017-05-29 4 views
1

存在しません:エラーは以下を使用して

CREATE TYPE user_types AS ENUM ('it', 'accounting', 'processes'); 

CREATE TABLE my_users 
(
    my_user_id integer NOT NULL, 
    my_user_name text NOT NULL, 
    my_user_type user_types 
) 

私は、ユーザーのタイプのいずれかを変更したい:

ALTER TYPE user_types RENAME ATTRIBUTE it TO softwaredev CASCADE; 

私はエラーを取得する:

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

引用符とバッククォートを追加しようとしましたが、それは役に立ちませんでした。私がここに書いた例は正確なコードではなく、私のタイプは31文字ですが、私のタイプの長さは問題ではないと思います。私はPostgresのバージョン9.6.2

答えて

2

ALTER TYPE ... RENAME ATTRIBUTEを使用してい

だけENUMタイプのためではない、複合型のために動作します。

このようなタイプ(ALTER TYPE ... ADD VALUE 'new_value')に新しいエントリを追加する方法がありますが、列挙型エントリの削除や名前の変更はサポートされていません。

あなたはカタログを台無しに恐れていない場合は、スーパーユーザーとして試すことができます。

UPDATE pg_enum 
SET enumlabel = 'softwaredev' 
WHERE enumtypid = 'user_types'::regtype 
    AND enumlabel = 'it'; 

PostgreSQLのV10からの、あなたは

ALTER TYPE ... RENAME VALUE ... TO ... 
+0

ああを使用することができます...あまりにも悪いです。それで、カタログを使いこなしたり、新しいタイプを作成したり古いものを取り除いたりしています。ご回答有難うございます!! – DeniseMeander

+1

@DeniseMeander今後のPostgres 10では、enum値の名前を変更することができます:https://www.postgresql.org/docs/10/static/sql-altertype.html –

+0

ありがとうございました。私は答えに加えました。 –

関連する問題