PostgreSQL | 스키마(Schema) | 스키마 변경(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_name)로 변경한다.

스키마의 소유자를 변경하려면, 명령을 수행하는 역할이 수퍼 유저 또는 스키마의 소유자이면서 새로운 소유자의 직접 또는 간접적으로 구성원이고 스키마가 작성되는 데이터베이스에서 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=#

위와 같이 역할(role)이 없다면, 에러가 발생하기에 아래와 같이 역할을 하나 생성한다.

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 명령을 사용하여 생성된 스키마를 변경하는 방법에 대해 설명하였다.