DROP DATABASE¶
システムからデータベースを削除します。
- こちらもご参照ください。
CREATE DATABASE、 ALTER DATABASE、 DESCRIBE DATABASE、 SHOW DATABASES、 UNDROP DATABASE
構文¶
DROP DATABASE [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
パラメーター¶
name
ドロップするデータベースの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
CASCADE | RESTRICT
データベース内のテーブルを参照する外部キーが存在する場合は、データベースをドロップできるかどうかを指定します。
CASCADE
は、データベースおよびデータベース内のすべてのオブジェクトをドロップします。これには、他のテーブルの外部キーによって参照される主キー/一意キーを持つテーブルが含まれます。RESTRICT
は、既存の外部キー参照に関する警告を返し、データベースをドロップしません。
デフォルト:
CASCADE
使用上の注意¶
データベースをドロップしても、システムから永久に削除されるわけではありません。ドロップされたデータベースのバージョンは、データベースの
DATA_RETENTION_TIME_IN_DAYS
パラメーターで指定された日数の間、 Time Travel に保持されます。Time Travelの保持期間内に、ドロップされたデータベースは UNDROP DATABASE コマンドを使用して復元できます。
Time Travelの保持期間が終了すると、ドロップされたデータベースの次の状態は、永続的か一時的かによって異なります。
永続的なデータベースが Fail-safe に移動します。Fail-safe(7日)では、ドロップされたデータベースを復元できますが、Snowflakeのみです。データベースがFail-safeのままになると、パージされます。
一時データベースにはFail-safeがないため、Time Travelから外れるとパージされます。
ドロップされたデータベースがパージされると、回復できません。再作成する必要があります。
現在、データベースが削除されると、子スキーマまたはテーブルのデータ保持期間は、データベースの保持とは明示的に異なるように設定されている場合、尊重されません。子スキーマまたはテーブルは、データベースと同じ期間保持されます。これらの子オブジェクト(スキーマまたはテーブル)のデータ保持期間を尊重するには、データベースまたはスキーマを削除する 前 に、明示的に削除します。
データベースをドロップした後、同じ名前のデータベースを作成すると、データベースの新しいバージョンが作成されます。以前のデータベースのドロップされたバージョンは、次の方法を使用して復元できます。
データベースの現在のバージョンの名前を別の名前に変更します。
UNDROP DATABASE コマンドを使用して、以前のバージョンを復元します。
ポリシーまたはタグがテーブルまたはビュー列にアタッチされている場合にデータベースを正常にドロップするには、ポリシーまたはタグがデータベースとスキーマ内で自己完結している必要があります。たとえば、
database_1
にはpolicy_1
が含まれ、policy_1
はdatabase_1
でのみ使用されます。それ以外では、 ダングリング参照 が発生します。ユーザーまたはアカウントにセッションポリシーまたはパスワードポリシーが設定されている場合、 DROP 操作は失敗します。
データベース複製の使用上の注意¶
セカンダリデータベースはいつでも削除できます。データベースを削除できるのは、データベース所有者(つまり、データベースに対する OWNERSHIP 権限を持つロール)のみです。
データベースの1つ以上のレプリカ(つまり、セカンダリデータベース)が存在する場合、プライマリデータベースは削除できません。プライマリデータベースを削除するには、まずセカンダリデータベースをプライマリデータベースとして昇格させてから、以前のプライマリデータベースを削除します。または、プライマリデータベースのセカンダリデータベースをすべて削除してから、プライマリデータベースを削除します。
データベースを削除できるのはデータベース所有者のみであることに注意してください。
例¶
DROP DATABASE mytestdb2; +---------------------------------+ | status | |---------------------------------| | MYTESTDB2 successfully dropped. | +---------------------------------+ SHOW DATABASES LIKE 'mytestdb2'; +------------+------+------------+------------+--------+-------+---------+---------+----------------+ | created_on | name | is_default | is_current | origin | owner | comment | options | retention_time | |------------+------+------------+------------+--------+-------+---------+---------+----------------| +------------+------+------------+------------+--------+-------+---------+---------+----------------+ SHOW DATABASES HISTORY LIKE 'mytestdb2'; +---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+ | created_on | name | is_default | is_current | origin | owner | comment | options | retention_time | dropped_on | |---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------| | Wed, 25 Feb 2015 16:16:54 -0800 | MYTESTDB2 | N | N | | PUBLIC | | | 1 | Fri, 13 May 2016 17:35:09 -0700 | +---------------------------------+-----------+------------+------------+--------+--------+---------+---------+----------------+---------------------------------+