PostgreSQL14.4に列挙型(ENUM)値を変更する方法
環境
OSバージョンの確認
# cat /etc/redhat-release
Rocky Linux release 9.0 (Blue Onyx)
# cat /etc/redhat-release
Rocky Linux release 9.0 (Blue Onyx)
# cat /etc/redhat-release Rocky Linux release 9.0 (Blue Onyx)
PostgreSQLバージョンの確認
# psql --version
psql (PostgreSQL) 14.4
# psql --version
psql (PostgreSQL) 14.4
# psql --version psql (PostgreSQL) 14.4
構文
1.ENUM値を作成します
CREATE TYPE 列挙型名 AS ENUM (値1 , 値2 ,...)
CREATE TYPE 列挙型名 AS ENUM (値1 , 値2 ,...)
CREATE TYPE 列挙型名 AS ENUM (値1 , 値2 ,...)
CREATE TYPEを使って、列挙型(ENUM)を作成します。
2.ENUM値を変更する構文
ALTER TYPE 列挙型(ENUM値) RENAME VALUE '変更前の値' TO '変更後の値';
ALTER TYPE 列挙型(ENUM値) RENAME VALUE '変更前の値' TO '変更後の値';
ALTER TYPE 列挙型(ENUM値) RENAME VALUE '変更前の値' TO '変更後の値';
PostgreSQL 14.4に列挙型(ENUM値)値を追加する手順
1.列挙型を作成します
postgres=# create type citys as enum('tokyo','oosaka','fukuoka');
CREATE TYPE
postgres=# create type citys as enum('tokyo','oosaka','fukuoka');
CREATE TYPE
postgres=# create type citys as enum('tokyo','oosaka','fukuoka'); CREATE TYPE
2.列挙型(enum)値を確認します
SQL構文
select pn.nspname,
pt.typname,
pe.enumlabel
from pg_type pt
join pg_enum pe on pt.oid = pe.enumtypid
join pg_catalog.pg_namespace pn ON pn.oid = pt.typnamespace
select pn.nspname,
pt.typname,
pe.enumlabel
from pg_type pt
join pg_enum pe on pt.oid = pe.enumtypid
join pg_catalog.pg_namespace pn ON pn.oid = pt.typnamespace
select pn.nspname, pt.typname, pe.enumlabel from pg_type pt join pg_enum pe on pt.oid = pe.enumtypid join pg_catalog.pg_namespace pn ON pn.oid = pt.typnamespace
実行結果
nspname typname enumlabel
public citys tokyo
public citys oosaka
public citys fukuoka
public citys yokohama
nspname typname enumlabel
public citys tokyo
public citys oosaka
public citys fukuoka
public citys yokohama
nspname typname enumlabel public citys tokyo public citys oosaka public citys fukuoka public citys yokohama
3.列挙型(ENUM)値を変更します
postgres=# ALTER TYPE citys RENAME VALUE 'tokyo' TO 'shinagawa';
ALTER TYPE
postgres=# ALTER TYPE citys RENAME VALUE 'tokyo' TO 'shinagawa';
ALTER TYPE
postgres=# ALTER TYPE citys RENAME VALUE 'tokyo' TO 'shinagawa'; ALTER TYPE
列挙型(ENUM)値変更後を確認します
SQL構文
select pn.nspname,
pt.typname,
pe.enumlabel
from pg_type pt
join pg_enum pe on pt.oid = pe.enumtypid
join pg_catalog.pg_namespace pn ON pn.oid = pt.typnamespace
select pn.nspname,
pt.typname,
pe.enumlabel
from pg_type pt
join pg_enum pe on pt.oid = pe.enumtypid
join pg_catalog.pg_namespace pn ON pn.oid = pt.typnamespace
select pn.nspname, pt.typname, pe.enumlabel from pg_type pt join pg_enum pe on pt.oid = pe.enumtypid join pg_catalog.pg_namespace pn ON pn.oid = pt.typnamespace
実行結果
nspname typname enumlabel
public citys oosaka
public citys fukuoka
public citys yokohama
public citys shinagawa
nspname typname enumlabel
public citys oosaka
public citys fukuoka
public citys yokohama
public citys shinagawa
nspname typname enumlabel public citys oosaka public citys fukuoka public citys yokohama public citys shinagawa