テーブルを削除する(DROP TABLE)

作成済みのテーブルを削除する場合は DROP TABLE コマンドを使用します。ここでは PostgreSQL で作成済みのテーブルを削除する方法について解説します。

(Last modified: )

テーブルを削除する

テーブルを削除するには DROP TABLE コマンドを使用します。次の書式を使います。

DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

テーブル名( name )のテーブルを削除します。

テーブルに対してビューや他のテーブルから外部キー参照が作成されていた場合、 RESTRICT が設定されていた場合はエラーとなります。 CASCADE を指定した場合はビューも併せて削除となり外部キー制約については外部キー制約のみが削除されます。特に指定しなかった場合は RESTRICT が指定されたものとして扱われます。

テーブルを削除するには、コマンドを実行するロールがスーパーユーザーか、テーブルの所有者か、テーブルが作成されているスキーマの所有者である必要があります。

-- --

それでは実際に試してみます。現在 mydb データベースの public スキーマに作成されているテーブルおよびビューは次の通りです。

\d

テーブルを削除する(1)

この中から bookmark テーブルを削除します。次のように実行してください。

drop table bookmark;

テーブルを削除する(2)

テーブルが削除されました。確認のためにあらためて \d コマンドを実行してみます。

テーブルを削除する(3)

bookmark テーブルが削除されていることが確認できます。

-- --

次に mybook テーブルを削除します。 mybook テーブルに対しては bookname ビューが作成されています。では次のように実行してください。

drop table mybook;

テーブルを削除する(4)

ERROR: 他のオブジェクトが依存しているためテーブルmybookを削除できません というエラーが表示されてテーブルの削除に失敗しました。 mybook テーブルのようにテーブルからビューが作成されている場合などには DROP TABLE コマンドを実行するときに CASCADE を指定する必要があります。

それでは次のように実行してください。

drop table mybook cascade;

テーブルを削除する(5)

テーブルの削除に成功しました。 mybook テーブルからは bookname ビューが作成されていましたが、 CASCADE を付けてテーブルを削除したので bookname ビューもあわせて削除されました。確認のため \d コマンドを実行してみます。

テーブルを削除する(6)

public スキーマの中にあった mybook テーブルと bookname ビューがまとめて削除されました。

-- --

DROP TABLE コマンドを使ってテーブルを削除する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。