DROP ICEBERG TABLE¶

Removes an Apache Iceberg™ table from the current/specified schema, but retains a version of the Iceberg table so that it can be recovered using UNDROP ICEBERG TABLE. For more information, see Usage Notes (in this topic).

Note that this topic refers to Iceberg tables as simply “tables” except where specifying Iceberg tables avoids confusion.

See also:

CREATE ICEBERG TABLE , SHOW ICEBERG TABLES , UNDROP ICEBERG TABLE

Syntax¶

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

Parameters¶

name

Specifies the identifier for the table to drop. If the identifier contains spaces, special characters, or mixed-case characters, the entire string must be enclosed in double quotes. Identifiers enclosed in double quotes are also case-sensitive (for example, "My Object").

If the table identifier is not fully-qualified (in the form of db_name.schema_name.table_name or schema_name.table_name), the command looks for the table in the current schema for the session.

CASCADE | RESTRICT

Specifies whether the table can be dropped if foreign keys exist that reference the table:

  • CASCADE drops the table even if the table has primary/unique keys that are referenced by foreign keys in other tables.

  • RESTRICT returns a warning about existing foreign key references and does not drop the table.

Default: CASCADE

Access control requirements¶

A role used to execute this SQL command must have the following privileges at a minimum:

Privilege

Object

Notes

OWNERSHIP

Iceberg table

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

External volume

USAGE

Integration (catalog)

Required if the Iceberg table uses an external catalog.

Note that operating on any object in a schema also requires the USAGE privilege on the parent database and schema.

For instructions on creating a custom role with a specified set of privileges, see Creating custom roles.

For general information about roles and privilege grants for performing SQL actions on securable objects, see Overview of Access Control.

Usage notes¶

  • Dropping a table does not permanently remove it from the system. Snowflake retains a version of the dropped table in Time Travel for the number of days specified by the DATA_RETENTION_TIME_IN_DAYS parameter for the table. For more information, see Metadata and snapshots for Iceberg tables.

  • Within the Time Travel retention period, you can restore a dropped table by using the UNDROP ICEBERG TABLE command.

  • After a dropped table has been purged, it cannot be recovered; it must be recreated.

  • After dropping a table, creating a table with the same name creates a new version of the table. You can restore the dropped version of the previous table with the following steps:

    1. Rename the current version of the table to a different name.

    2. Use the UNDROP ICEBERG TABLE command to restore the previous version.

  • Before you drop a table, verify that no views reference the table. Dropping a table that is referenced by a view invalidates the view (querying the view returns an “object does not exist” error).

Examples¶

Drop a table:

DROP ICEBERG TABLE t2;

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

Drop the table again, but don’t raise an error if the table doesn’t exist:

DROP ICEBERG TABLE IF EXISTS t2;

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