DROP ICEBERG TABLE¶
从当前/指定的架构中移除 Iceberg 表,但保留 Iceberg 表的某个版本,以便可以使用 UNDROP ICEBERG TABLE 将其恢复。有关更多信息,请参阅 `使用说明`_(本主题内容)。
请注意,本主题将 Iceberg 表简称为“表”,除非指定 Iceberg 表 以避免混淆。
语法¶
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
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
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 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
删除表不会将其从系统中永久移除。Snowflake 会在 Time Travel 中保留已删除表的版本,而保留天数由该表的
DATA_RETENTION_TIME_IN_DAYS
参数指定。有关更多信息,请参阅 Iceberg 表的元数据和快照。在 Time Travel 保留期内,您可以使用 UNDROP ICEBERG TABLE 命令恢复已还原的表。
已删除的表清除之后便无法恢复,只能重新创建。
删除表后,创建同名表将会创建该表的新版本。您可以通过以下步骤还原先前表的已删除版本:
将表的当前版本重命名为其他名称。
使用 UNDROP ICEBERG TABLE 命令还原先前的版本。
在删除表之前,请验证 :emph:` 没有 ` 视图引用该表。删除视图引用的表会导致视图失效(查询视图会返回“对象不存在”错误)。
示例¶
删除表:
DROP ICEBERG TABLE t2; +--------------------------+ | status | |--------------------------| | T2 successfully dropped. | +--------------------------+
再次删除该表,但如果该表不存在,则不会引发错误:
DROP ICEBERG TABLE IF EXISTS t2; +------------------------------------------------------------+ | status | |------------------------------------------------------------| | Drop statement executed successfully (T2 already dropped). | +------------------------------------------------------------+