#DROP TABLE
# 通用描述
DROP TABLE语句用于删除表对象(包括建立其上面的索引、约束、触发器等对象),同时该表的数据被删除,该表及索引所占数据空间被全部释放。
DROP 操作删除了表对象的所有相关定义,如需再次使用该表,只能按创建新表的方式进行重建。
DROP 操作不能回滚(Rollback),也不能通过flashback_query_clause获得操作之前的数据。如果指定了PURGE语句,则也无法从回收站恢复。
当需要DROP被子表定义了外键约束的父表时,需要指定CASCADE CONSTRAINTS。
当需要DROP已建立了AC的源表时,需先DROP该表上全部的AC后,才可以DROP该表。
# 语句定义
drop table::=
# if exists
该语句用于指定在DROP 表之前,先判断该表是否存在,省略则不会判断,此时如果要删除的表不存在,系统将提示错误。
示例
--DROP不存在的表area1
DROP TABLE IF EXISTS area1;
# cascade constraints
该语句只作用于单机HEAP表,用于指定当表被子表定义了外键约束时,先删除子表上的外键约束项,再DROP该表。
示例
--area的子表branches表上定义的外键约束被删除
DROP TABLE area CASCADE CONSTRAINTS;
# purge
该语句用于指定彻底删除表,而不是进入回收站(ReclycleBin)。分布式部署中无法使用本语句。
YashanDB的配置参数里定义了是否使用回收站的开关,即RECYCLYBIN参数。当RECYCLEBIN设置为ON时,执行DROP TABLE时系统会将表对象及数据放入回收站(表名称被修改为BIN开头的系统生成字符串),用于误操作之后的恢复。
如果显式指定了PURGE语句,则DROP的表对象及数据不会进入回收站,而是被彻底删除,无法恢复。
示例
DROP TABLE area PURGE;