DROP TABLE¶
現在のスキーマまたは指定されたスキーマからテーブルを削除しますが、 UNDROP TABLE を使用して回復できるようにテーブルのバージョンを保持します。詳細については、 使用上の注意 (このトピック)をご参照ください。
- こちらもご参照ください。
CREATE TABLE、 ALTER TABLE、 SHOW TABLES、 TRUNCATE TABLE、 DESCRIBE TABLE
構文¶
DROP TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
パラメーター¶
name
ドロップするテーブルの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます(例:
"My Object"
)。テーブル識別子が完全修飾されていない場合(
db_name.schema_name.table_name
またはschema_name.table_name
の形式)、コマンドは、セッションの現在のスキーマにあるテーブルを探します。CASCADE | RESTRICT
テーブルを参照する外部キーが存在する場合、テーブルをドロップできるかどうかを指定します。
CASCADE
は、テーブルに他のテーブルの外部キーによって参照されるプライマリ/一意キーがある場合でも、テーブルをドロップします。RESTRICT
は既存の外部キー参照に関する警告を返し、テーブルをドロップしません。
デフォルト:
CASCADE
使用上の注意¶
テーブルをドロップしても、システムから永久に削除されるわけではありません。ドロップされたテーブルのバージョンは、テーブルの データ保持期間 で指定された日数の間、 Time Travel に保持されます。
Time Travelの保持期間内、ドロップされたテーブルは UNDROP TABLE コマンドを使用して復元できます。
テーブルがドロップされた 後に アカウントまたは親オブジェクト(つまり、データベースまたはスキーマ)のTime Travel保持期間を変更しても、ドロップされたテーブルのTime Travel保持期間は変更されません。詳細については、 Time Travelトピックの注意事項 をご参照ください。
Time Travelの保持期間が終了すると、ドロップされたテーブルの次の状態は、永続的、一時的、または仮のいずれかによって異なります。
永続的なテーブルが Fail-safe に移動します。Fail-safe(7日)では、ドロップされたテーブルは回復できますが、Snowflakeによってのみです。テーブルがFail-safeのままになると、パージされます。
一時テーブルまたは仮テーブルにはFail-safeがないため、Time Travelから外れるとパージされます。
注釈
長時間実行されるTime Travelクエリは、クエリが完了するまで、アカウント内のデータとオブジェクト(テーブル、スキーマ、およびデータベース)をFail-safeに移動するのを遅らせます。仮テーブルと一時テーブルのパージも同様に遅れます。
ドロップされたテーブルがパージされると、復元できません。再作成する必要があります。
テーブルをドロップした後、同じ名前のテーブルを作成すると、新しいバージョンのテーブルが作成されます。以前のテーブルのドロップされたバージョンは、次の方法を使用して復元できます。
現在のバージョンのテーブルの名前を別の名前に変更します。
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). | +------------------------------------------------------------+