カテゴリ:

テーブル、ビュー、シーケンス DDL

DROP TABLE

現在のスキーマまたは指定されたスキーマからテーブルを削除しますが、 UNDROP TABLE を使用して回復できるようにテーブルのバージョンを保持します。詳細については、 使用上の注意 (このトピック)をご参照ください。

こちらもご参照ください:

CREATE TABLE , SHOW TABLES , TRUNCATE TABLE

構文

DROP TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]

パラメーター

名前

ドロップするテーブルの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます(例: "My Object")。

テーブル識別子が完全修飾されていない場合( データベース名.スキーマ名.テーブル名 または スキーマ名.テーブル名 の形式)、コマンドはセッションの現在のスキーマのテーブルを探します。

CASCADE | RESTRICT

テーブルを参照する外部キーが存在する場合、テーブルをドロップできるかどうかを指定します。

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

  • RESTRICT は既存の外部キー参照に関する警告を返し、テーブルをドロップしません。

デフォルト: CASCADE

使用上の注意

  • テーブルをドロップしても、システムから永久に削除されるわけではありません。ドロップされたテーブルのバージョンは、テーブルの DATA_RETENTION_TIME_IN_DAYS パラメーターで指定された日数の間、 Time Travel に保持されます。

    1. Time Travelの保持期間内、ドロップされたテーブルは UNDROP TABLE コマンドを使用して復元できます。

    2. Time Travelの保持期間が終了すると、ドロップされたテーブルの次の状態は、永続的、一時的、または仮のいずれかによって異なります。

      • 永続的なテーブルが Fail-safe に移動します。Fail-safe(7日)では、ドロップされたテーブルは回復できますが、Snowflakeによってのみです。テーブルがFail-safeのままになると、パージされます。

      • 一時テーブルまたは仮テーブルにはFail-safeがないため、Time Travelから外れるとパージされます。

    3. ドロップされたテーブルがパージされると、復元できません。再作成する必要があります。

  • テーブルをドロップした後、同じ名前のテーブルを作成すると、新しいバージョンのテーブルが作成されます。以前のテーブルのドロップされたバージョンは、次の方法を使用して復元できます。

    1. 現在のバージョンのテーブルの名前を別の名前に変更します。

    2. UNDROP TABLE コマンドを使用して、以前のバージョンを復元します。

  • テーブルを削除する前に、テーブルを参照するビューが ない ことを確認してください。ビューが参照するテーブルをドロップすると、ビューが無効になります(つまり、ビューをクエリすると「オブジェクトが存在しません」というエラーが返されます)。

  • テーブルを削除するには、テーブルの所有権を持つロールを使用する必要があります。

テーブルをドロップします。

SHOW TABLES LIKE 't2%';

+---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+
| created_on                      | name | database_name | schema_name | kind      | comment    | cluster_by | rows | bytes | owner        | retention_time |
|---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+
| Tue, 17 Mar 2015 16:48:16 -0700 | T2   | TESTDB        | PUBLIC      | TABLE     |            |            |    5 | 4096  | PUBLIC       |              1 |
+---------------------------------+------+---------------+-------------+-----------+------------+------------+------+-------+--------------+----------------+

DROP TABLE t2;

+--------------------------+
| status                   |
|--------------------------|
| T2 successfully dropped. |
+--------------------------+

SHOW TABLES LIKE 't2%';

+------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+
| created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time |
|------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------|
+------------+------+---------------+-------------+------+---------+------------+------+-------+-------+----------------+

テーブルを再度ドロップしますが、テーブルが存在しない場合でもエラーを発生させないでください。

DROP TABLE IF EXISTS t2;

+------------------------------------------------------------+
| status                                                     |
|------------------------------------------------------------|
| Drop statement executed successfully (T2 already dropped). |
+------------------------------------------------------------+