【SQL】DROP TABLE ~ テーブル削除 ~

◾️はじめに

既存システムのコード調査をしてた時に
CASCADE って見慣れないキーワードを見たのでメモ。

 はじめ、大したことなさそうなので、記事にするか迷ったが、
このオプションについて、さまざまなDBでサポートされているが
DBごとによって仕様やデフォルト値は異なるので注意。

目次

【1】DROP TABLE
 1)各DB仕様
【2】オプション「CASCADE / RESTRICT」
 1)CASCADE
 2)RESTRICT

【1】DROP TABLE

-- テーブル削除
DROP TABLE 【テーブル名】;

1)各DB仕様

PostgreSQL
https://www.postgresql.jp/docs/9.4/sql-droptable.html
Snowflake
https://docs.snowflake.com/ja/sql-reference/sql/drop-table#parameters

【2】オプション「CASCADE / RESTRICT」

冒頭でも記述したが、、、
DB 固有ではなく、さまざまなDBでサポートされているが
DBごとによって仕様やデフォルト値は異なるので注意。
Items Default CASCADE指定時の外部キー制約テーブル Memo
PostgreSQL RESTRICT 削除しない -
Snowflake CASCADE 削除する -

1)CASCADE

* 削除するテーブルに依存しているオブジェクト(ビューなど)を自動的に削除
 => DBごとに細かい仕様は違う模様(以下の記述を参照)

cf. CASCADE (カスケード) = 小滝,滝
 => ITにおいては、「直列接続」や「段階的なプロセス」で用いられる

PostgreSQL
https://www.postgresql.jp/docs/9.4/sql-droptable.html

より抜粋
〜〜〜
外部キー制約によって参照されている場合は、
外部キー制約のみが削除され、その外部キーを持つテーブルそのものは削除されません
〜〜〜

Snowflake
https://docs.snowflake.com/ja/sql-reference/sql/drop-table#parameters

より抜粋
〜〜〜
テーブルに他のテーブルの外部キーによって
参照されるプライマリ/一意キーがある場合でも、
テーブルをドロップします

デフォルト: CASCADE
〜〜〜

2)RESTRICT

* 依存しているオブジェクトがある場合に、テーブルの削除を拒否

cf. RESTRICT = 制限

関連記事

CREATE TABLE ~ テーブル作成 ~
https://dk521123.hatenablog.com/entry/2010/07/09/201233