DROP TABLE — 移除一个表
DROP TABLE [ IF EXISTS ] name
[, ...] [ CASCADE [CONSTRAINTS] | RESTRICT ] [ PURGE ]
DROP TABLE
从数据库移除表。只有表拥有者、模式拥有者和超级用户能删除一个表。要清空一个表中的行但是不销毁该表,可以使用DELETE或者TRUNCATE。
DROP TABLE
总是移除目标表的任何索引、规则、触发器和约束。不过,要删除一个被视图或者另一个表的外键约束所引用的表,必须指定CASCADE
(CASCADE
将会把依赖的视图也完全移除,但是对于外键它将只移除外键约束,而不是完全移除其他表)。
IF EXISTS
如果该表不存在则不要抛出一个错误,这种情况下会发出一个提示。
name
要删除的表的名称(可以是模式限定的)。
CASCADE
自动删除依赖于该表的对象(例如视图),然后删除所有依赖于那些对象的对象(见Section 6.14)。
CASCADE CONSTRAINTS
自动删除依赖于该表的对象(例如视图),然后删除所有依赖于那些对象的对象。此为兼容Oracle语法,实际功能与CASCADE
相同(见Section 6.14)。
RESTRICT
如果有任何对象依赖于该表,则拒绝删除它。这是默认值。
PURGE
在 LightDB 的 oracle 模式下,当 enable_recyclebin
选项
设置为ON,并且不使用 PURGE
参数时,表及其相关对象不会从
数据库中永久删除。相反,它们会被放入回收站,以便在需要时可以作为一个整体恢
复。用户可以使用 FLASHBACK TABLE 命令来撤销删除操作,
并使用 PURGE 命令来清空回收站。
如果使用了 PURGE
参数,表将被永久删除。
要销毁两个表films
和distributors
:
DROP TABLE films, distributors;
删除表films
,并自动删除依赖于该表的对象:
DROP TABLE films CASCADE;
或
DROP TABLE films CASCADE CONSTRAINTS;
这个命令符合SQL标准,不过该标准只允许每个命令删除一个表并且没有IF EXISTS
选项。该选项是一个LightDB扩展。