PostgreSQL ENUM値(列挙型)を使用する
- 作成日 2022.07.23
- PostgreSQL
- PostgreSQL
PostgreSQLで、INDEXを再構築するREINDEXを実行する手順を記述してます。
環境
- OS Rocky Linux release 8.4 (Green Obsidian)
- PostgreSQL 14.0
- pgadmin 6.0
ENUM値(列挙型)作成
REINDEXを実行する場合は、「CREATE TYPE」を使用します。
CREATE TYPE 列挙型名 AS ENUM (値 , 値 , 値... )
実際に「bar」というENUM値を作成してみます。
CREATE TYPE bar AS ENUM ('tanaka', 'suzuki', 'sato')
実行結果
作成したENUM値を使用してテーブルを作成してみます。
CREATE TABLE foo (
id integer,
bartype bar
);
この作成した「foo」テーブルにたいして、ENUM値で列挙した値以外を「insert」するとエラーとなります。
まずは、ENUM値にある値を「insert」してみます。
INSERT INTO foo VALUES(1,'tanaka') -- ENUM値にあるのでエラーにならない
存在するのでエラーになりません。
次にENUM値にない値を「insert」してみます。
INSERT INTO foo VALUES(2,'takeda') -- ENUM値にないのでエラーになる
以下のように、ENUM値に存在しないのでエラーとなります。
ENUM値確認
作成したENUM値は、以下で確認できます。
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
ENUM値追加
ENUM値を追加する場合は、以下のように追加します。
さきほど作成した「bar」に値「’nakagawa’」を追加してみます。
ALTER TYPE bar ADD VALUE 'nakagawa'
ENUM値変更
ENUM値を変更する場合は、以下のように変更します。
ALTER TYPE bar RENAME VALUE 'tanaka' TO 'takasugi'
ENUM値を変更すると、ENUM値を使用したテーブルの値も変更されます。
ENUM値削除
削除する場合は、以下となります。
※使用されているとエラーになります。
DROP TYPE bar
実行結果
-
前の記事
VBA 少数以下を切り捨てる 2022.07.23
-
次の記事
sqlite アルファベットの小文字を大文字に変換する 2022.07.23
コメントを書く