DROP ICEBERG TABLE¶
現在/指定のスキーマから Icebergテーブル を削除しますが、 UNDROP ICEBERG TABLE を使用して復元できるように、Icebergテーブルのバージョンを保持します。詳細については、 使用上の注意 (このトピック内)をご参照ください。
このトピックでは、 Iceberg tables と指定することで混乱を避ける場合を除き、Icebergテーブルを単に「テーブル」と呼ぶことに注意してください。
- こちらもご参照ください。
CREATE ICEBERG TABLE , SHOW ICEBERG TABLES , UNDROP ICEBERG TABLE
構文¶
DROP [ ICEBERG ] TABLE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
パラメーター¶
name
ドロップするテーブルの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます(例えば、
"My Object"
)。テーブル識別子が完全修飾されていない場合(
db_name.schema_name.table_name
またはschema_name.table_name
の形式)、コマンドは、セッションの現在のスキーマにあるテーブルを探します。CASCADE | RESTRICT
テーブルを参照する外部キーが存在する場合、テーブルをドロップできるかどうかを指定します。
CASCADE
は、テーブルに他のテーブルの外部キーによって参照されるプライマリ/一意キーがある場合でも、テーブルをドロップします。RESTRICT
は既存の外部キー参照に関する警告を返し、テーブルをドロップしません。
デフォルト:
CASCADE
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
OWNERSHIP |
Icebergテーブル |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
USAGE |
外部ボリューム |
|
USAGE |
統合(カタログ) |
Icebergテーブルがカタログ統合を使用する場合は必要です。 |
スキーマ内の任意のオブジェクトを操作するには、親データベースとスキーマに対する USAGE 権限も必要であることに注意してください。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
テーブルをドロップしても、システムから永久に削除されるわけではありません。Snowflakeは、ドロップされたテーブルのバージョンをテーブルの
DATA_RETENTION_TIME_IN_DAYS
パラメーターで指定された日数の間、 Time Travel に保持します。詳細については、 Icebergテーブルのメタデータおよびスナップショット をご参照ください。Time Travelの保持期間内であれば、 UNDROP ICEBERG TABLE コマンドを使用して、ドロップしたテーブルを復元できます。
ドロップされたテーブルがパージされると、復元できません。再作成する必要があります。
テーブルをドロップした後、同じ名前のテーブルを作成すると、新しいバージョンのテーブルが作成されます。以下のステップに従うと、以前のテーブルのドロップされたバージョンを復元できます。
現在のバージョンのテーブルの名前を別の名前に変更します。
UNDROP ICEBERG TABLE コマンドを使用して、以前のバージョンを復元します。
テーブルをドロップする前に、テーブルを参照するビューが ない ことを確認してください。ビューが参照するテーブルをドロップすると、ビューが無効になります(ビューをクエリすると「オブジェクトが存在しません」というエラーが返されます)。
例¶
テーブルをドロップします。
DROP ICEBERG TABLE t2; +--------------------------+ | status | |--------------------------| | T2 successfully dropped. | +--------------------------+
テーブルを再度ドロップしますが、テーブルが存在しない場合でもエラーは発生しません。
DROP ICEBERG TABLE IF EXISTS t2; +------------------------------------------------------------+ | status | |------------------------------------------------------------| | Drop statement executed successfully (T2 already dropped). | +------------------------------------------------------------+