PostgreSQL | Schema | Modify a Schema (ALTER SCHEMA)

This page explains how to modify a created schema by using the ALTER SCHEMA command. The schema name and owner can be changed.

Rename a Schema

First, here is how to rename a schema by using the ALTER SCHEMA command. The syntax is as follows.

ALTER SCHEMA name RENAME TO new_name

This changes the current schema name (name) to the new schema name (new_name).

To rename a schema, the role executing the command must be a superuser or the schema owner, and it must have the CREATE privilege in the database where the schema is created.

Now try it in practice. If you run the psql meta-command \dn, you can see that the current devkuma database has two schemas in addition to the default public schema.

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


devkuma=#

Rename the orange_schema schema to fruit. Run the following.

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

The schema name has been changed. To confirm, run the \dn command again.

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


devkuma=#

You can confirm that the orange_schema schema has been renamed to fruit.

Change the Schema Owner

Next, here is how to change the owner of a schema by using the ALTER SCHEMA command. The syntax is as follows.

ALTER SCHEMA name OWNER TO new_owner

This changes the owner of the schema (name) to the new owner (new_owner).

To change the owner of a schema, the role executing the command must be a superuser or the schema owner, be a direct or indirect member of the new owner role, and have the CREATE privilege in the database where the schema is created.

Now try it in practice. If you run the psql meta-command \dn, you can see that the current devkuma database has two schemas in addition to the default public schema.

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


devkuma=#

Change the owner of the fruit schema to the kimkc role. Run the following.

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

If the role does not exist as shown above, an error occurs. Create a role as follows.

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

Now run the command again.

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

The schema owner has been changed. To confirm, run the \dn command again.

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


devkuma=#

You can confirm that the owner of the fruit schema has changed to the kimkc role.

This page explained how to modify a created schema by using the ALTER SCHEMA command.