[解決済み] postgresでenum型の値を削除する方法は?
2022-04-29 17:22:06
質問
postgresqlで作成したenum型の値を削除するにはどうすればよいですか?
create type admin_level1 as enum('classifier', 'moderator', 'god');
例
moderator
をリストから削除します。
ドキュメントには何も書かれていないようですが。
Postgresql 9.3.4を使っています。
解決方法を教えてください。
他の型と同じように、enum 型を削除(ドロップ)するには
DROP TYPE
:
DROP TYPE admin_level1;
もしかして、「どうすればいいのか」という質問ですか? 列挙型から個々の値を削除する ? もしそうなら、無理です。 サポート対象外です :
とはいえ
enum
型は主に静的な値の集合を意図していますが、既存の列挙型に新しい値を追加したり、値の名前を変更するためのサポートがあります (ALTER TYPE
). 既存の値を列挙型から削除することはできませんし、列挙型を削除して再作成しない限り、そのような値のソート順を変更することはできません。
値のない新しい型を作成し、古い型の既存の使用法をすべて新しい型を使用するように変換し、古い型を削除する必要があります。
例
CREATE TYPE admin_level1 AS ENUM ('classifier', 'moderator');
CREATE TABLE blah (
user_id integer primary key,
power admin_level1 not null
);
INSERT INTO blah(user_id, power) VALUES (1, 'moderator'), (10, 'classifier');
ALTER TYPE admin_level1 ADD VALUE 'god';
INSERT INTO blah(user_id, power) VALUES (42, 'god');
-- .... oops, maybe that was a bad idea
CREATE TYPE admin_level1_new AS ENUM ('classifier', 'moderator');
-- Remove values that won't be compatible with new definition
-- You don't have to delete, you might update instead
DELETE FROM blah WHERE power = 'god';
-- Convert to new type, casting via text representation
ALTER TABLE blah
ALTER COLUMN power TYPE admin_level1_new
USING (power::text::admin_level1_new);
-- and swap the types
DROP TYPE admin_level1;
ALTER TYPE admin_level1_new RENAME TO admin_level1;
関連
-
PostgreSQLのURL解決方法
-
[解決済み] psql: FATAL: データベース "<user>" が存在しない
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] PostgreSQL 自動インクリメント
-
[解決済み] PostgreSQLで更新+結合を行うには?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
postgresql 重複データ削除 ケーススタディ
-
単語をソートするカスタム関数とそれをPostgreSQLで使用する(実装コード)
-
エクセルテーブルのデータをpostgresqlのデータベースにインポートする方法
-
Postgresql データベース timescaledb timescaledb 問題 大容量データテーブルをスーパーテーブルに変換すること
-
Postgresqlのデータマージ、複数のデータを1つの操作にマージする。
-
Postgresqlのデータは、2つのフィールドを追加し、一意の操作を統合する
-
pgAdmin for postgreSQLでサーバーのデータをバックアップする方法
-
PostgreSQLにおけるsequence、serial、identityの使い方の違いについて
-
[解決済み] Postgres / PostgreSQLのテーブルとインデックスのディスクサイズはどのように見つけるのですか?
-
[解決済み] Postgres/SQLで2つの整数の最小値/最大値を取得する方法は?