PostgreSQL | スキーマ | スキーマの削除(DROP SCHEMA)
DROP SCHEMA コマンドを使用して、作成済みのスキーマを削除する方法について説明する。
スキーマを削除する
DROP SCHEMA コマンドを使用してスキーマを削除する。形式は次のとおりである。
DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
指定したスキーマ (name) を削除する。スキーマにテーブルなどのオブジェクトが含まれている場合、CASCADE を指定するとオブジェクトを含めて削除する。RESTRICT を指定すると削除を取り消す。デフォルトは RESTRICT である。
スキーマを削除するには、コマンドを実行するロールがスーパーユーザーまたはスキーマ所有者である必要がある。また、CASCADE を指定すると、一度に削除されるオブジェクトの所有者が別であっても、そのオブジェクトは削除される。
–
それでは実際に試してみる。一般ユーザー kimkc ロールで PostgreSQL の devkuma データベースに接続する。psql メタコマンド \dn を実行して確認すると、現在のデータベースには kimkc ロール所有の fruit スキーマが作成されている。
devkuma=# \dn
스키마(schema) 목록
이름 | 소유주
----------+----------
fruit | kimkc
myschema | postgres
public | postgres
(3개 행)
devkuma=#
fruit スキーマを削除する。次のように実行する。
devkuma=# drop schema fruit;
DROP SCHEMA
devkuma=#
スキーマが削除された。確認のため、もう一度 \dn コマンドを実行してみる。
devkuma=# \dn
스키마(schema) 목록
이름 | 소유주
----------+----------
myschema | postgres
public | postgres
(2개 행)
devkuma=#
fruit スキーマが削除されたことを確認できる。
–
次に、再び kimkc ロールを使用して apple スキーマを作成する。
C:\Users\kimkc>psql -U kimkc -d devkuma
kimkc 사용자의 암호:
psql (12.2)
도움말을 보려면 "help"를 입력하십시오.
devkuma=# create schema apple;
CREATE SCHEMA
devkuma=#
kimkc ロールとは別のスーパーユーザーのロールを使用して、apple スキーマにテーブルを作成する。
C:\Users\kimkc>psql -U postgres -d devkuma
postgres 사용자의 암호:
psql (12.2)
도움말을 보려면 "help"를 입력하십시오.
devkuma=# create table apple.blog (id integer);
CREATE TABLE
devkuma=#
これで apple スキーマには、kimkc ロールとは異なるロールが所有者であるテーブルが作成された。
devkuma=# \dt apple.*;
릴레이션(relation) 목록
스키마 | 이름 | 종류 | 소유주
--------+------+--------+----------
apple | blog | 테이블 | postgres
(1개 행)
devkuma=#
それでは kimkc ロールを使用して apple スキーマを削除するため、次のように実行する。
C:\Users\kimkc>psql -U kimkc -d devkuma
kimkc 사용자의 암호:
psql (12.2)
도움말을 보려면 "help"를 입력하십시오.
devkuma=# drop schema apple;
오류: 기타 다른 개체들이 이 개체에 의존하고 있어, apple 스키마 삭제할 수 없음
상세정보: apple.blog 테이블 의존대상: apple 스키마
힌트: 이 개체와 관계된 모든 개체들을 함께 삭제하려면 DROP ... CASCADE 명령을 사용하십시오
devkuma=#
すると「오류: 기타 다른 개체들이 이 개체에 의존하고 있어, apple 스키마 삭제할 수 없음」というエラーメッセージが表示され、スキーマを削除できない。
明示的に CASCADE を指定しない場合は RESTRICT を指定したのと同じなので、スキーマ内にオブジェクトが存在すると削除できない。
今回は CASCADE を指定して apple スキーマを削除する。次のように実行する。
devkuma=# drop schema apple cascade;
알림: apple.blog 테이블 개체가 덩달아 삭제됨
DROP SCHEMA
devkuma=#
apple スキーマが削除された。apple スキーマには別の所有者が作成したテーブルが含まれていたが、同時に削除された。
–
ここまで、DROP SCHEMA コマンドを使用して作成済みのスキーマを削除する方法について説明した。