PostgreSQL | スキーマ | スキーマの変更(ALTER SCHEMA)

ALTER SCHEMA コマンドを使用して、作成済みのスキーマを変更する方法について説明する。変更できるのは、スキーマ名と所有者である。

スキーマ名の変更

まず ALTER SCHEMA コマンドを使用してスキーマ名を変更する方法である。形式は次のとおりである。

ALTER SCHEMA name RENAME TO new_name

現在のスキーマ名 (name) を新しいスキーマ名 (new_name) に変更する。

スキーマ名を変更するには、コマンドを実行するロールがスーパーユーザーまたはスキーマ所有者であり、スキーマが作成されているデータベースで CREATE 権限を持っている必要がある。

それでは実際に試してみる。psql メタコマンド \dn を実行して確認すると、現在の devkuma データベースには、デフォルトで作成される public 以外に 2 つのスキーマが作成されている。

devkuma=# \dn
   스키마(schema) 목록
     이름      |  소유주
---------------+----------
 myschema      | postgres
 orange_schema | orange
 public        | postgres
(3개 행)


devkuma=#

このうち orange_schema スキーマの名前を fruit に変更する。次のように実行する。

devkuma=# alter schema orange_schema rename to fruit;
ALTER SCHEMA
devkuma=#

スキーマ名が変更された。確認のため、もう一度 \dn コマンドを実行してみる。

devkuma=# \dn
 스키마(schema) 목록
   이름   |  소유주
----------+----------
 fruit    | orange
 myschema | postgres
 public   | postgres
(3개 행)


devkuma=#

orange_schema スキーマの名前が fruit に変更されていることを確認できる。

スキーマの所有者を変更する

次に、ALTER SCHEMA コマンドを使用してスキーマの所有者を変更する方法である。形式は次のとおりである。

ALTER SCHEMA name OWNER TO new_owner

スキーマ (name) の所有者を新しい所有者 (new_owner) に変更する。

スキーマの所有者を変更するには、コマンドを実行するロールがスーパーユーザーまたはスキーマ所有者であり、新しい所有者の直接または間接のメンバーで、スキーマが作成されているデータベースで CREATE 権限を持っている必要がある。

それでは実際に試してみる。psql メタコマンド \dn を実行して確認すると、現在の devkuma データベースには、デフォルトで作成される public 以外に 2 つのスキーマが作成されている。

devkuma=# \dn
 스키마(schema) 목록
   이름   |  소유주
----------+----------
 fruit    | orange
 myschema | postgres
 public   | postgres
(3개 행)


devkuma=#

このうち fruit スキーマの所有者を kimkc ロールに変更する。次のように実行する。

devkuma=# alter schema fruit owner to kimkc;
오류:  "kimkc" 롤(role) 없음
devkuma=#

上のようにロールが存在しない場合はエラーが発生するため、次のようにロールを 1 つ作成する。

devkuma=# create role kimkc with superuser login password '1234';
CREATE ROLE
devkuma=#

それでは次のように再度実行してみる。

devkuma=# alter schema fruit owner to kimkc;
ALTER SCHEMA
devkuma=#

スキーマの所有者が変更された。確認のため、もう一度 \dn コマンドを実行してみる。

devkuma=# \dn
 스키마(schema) 목록
   이름   |  소유주
----------+----------
 fruit    | kimkc
 myschema | postgres
 public   | postgres
(3개 행)


devkuma=#

fruit スキーマの所有者が kimkc ロールに変更されていることを確認できる。

ここまで、ALTER SCHEMA コマンドを使用して作成済みのスキーマを変更する方法について説明した。