◾️はじめに
既存システムのコード調査をしてた時に 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