OracleDropTable
DROP TABLE
使⽤DROP TABLE语句将表或对象表移动到回收站或从数据库中完全删除表及其所有数据。
注:除⾮指定purge⼦句,否则drop table语句不会将表占⽤的空间释放回表空间供其他对象使⽤,占⽤空间继续计⼊⽤户的空间配额。
对于外部表,此语句只删除数据库中的表元数据。它不会影响实际数据,实际数据位于数据库之外。
删除属于集的表时,该表将移动到回收站。但是,如果随后除去集,那么表将从回收站清空,不能再使⽤FLASHBACK TABLE进⾏恢复操作。
删除表将使依赖对象失效,并删除表上的对象特权。如果要重新创建表,则必须重新授予表的对象权限,重新创建表的索引、完整性约束和触发器,并重新指定其存储参数。TRUNCATE没有这些效果。因此,使⽤truncate语句删除⾏⽐删除和重新创建表更有效。
先决条件
该表必须在您⾃⼰的模式中,或者您必须具有 DROP ANY TABLE系统权限。
只有在没有会话绑定到临时表时,才能对其执⾏DDL操作(如更改表、删除表、创建索引)。通过对表执⾏插⼊操作,会话将绑定到临时表。通过发出runcate语句或在会话终⽌时,或者对于事务特定的临时表,通过发出commit或rollback语句,会话将解除与临时表的绑定。
语义
模式
指定包含表的模式。如果省略了模式,那么Oracle数据库假定表在您⾃⼰的模式中。
表
指定要删除的表的名称。Oracle数据库⾃动执⾏以下操作:
删除表中的所有⾏。
删除所有表索引和域索引,以及表上定义的任何触发器,⽆论是谁创建的索引或是谁的模式包含这些索引。如果是分区表,那么任何相应的本地索引分区也将删除。
删除嵌套表的所有存储表和表的LOB。
删除⼀个 range-, hash-, 或 list-分区表时,数据库将删除所有表分区。如果删除⼀个复合分区表,那么所有分区和subpartitions也将被删除。
当使⽤purge关键字删除分区表时,该语句将作为⼀系列⼦事务执⾏,每个⼦事务都会删除分区或⼦分区的⼦集及其元数据。这种将删除操作分为⼦事务的划分优化了内部系统资源消耗的处理。(例如,库缓存),尤其是⽤于删除⾮常⼤的分区表。⼀旦第⼀个⼦事务提交,表就被标记为UNUSABLE。如果有subtransactions失败,那么表上唯⼀允许的操作是另⼀个DROP TABLE ... PURGE语句。
这样的语句将从上⼀个drop table语句失败的位置恢复⼯作,假定您已更正了上⼀个操作遇到的任何错误。您可以通过查询数据字典视图(视情况⽽定) *_TABLES, *_PART_TABLES, *_ALL_TABLES, 或*_OBJECT_TABLES的status列,列出此类删除操作标记为UNUSABLE的表。
对于索引组织表,删除索引组织表上定义的任何映射表。
对于域索引,调⽤适当的删除例程。有关这些例程的详细信息,请参阅《Oracle Database Data Cartridge Developer's Guide》。
如果有任何统计类型与表关联,则数据库将使⽤force⼦句取消统计类型的关联,并删除使⽤统计类型收集的任何⽤户定义的统计。drop删除表
如果表不是集的⼀部分,那么数据库会将分配给该表的所有数据块及其索引返回到包含该表及其索引的表空间。要除去⼀个集及其所有表,请将drop cluster语句与including tables⼦句⼀起使⽤,以避免单独除去每个表。请参见DROP CLUSTER。
如果表是视图、容器或物化视图的主表的基表,或者如果它在存储过程、函数或包中引⽤,则数据库会使这些依赖对象失效,但不会删除它们。你不能使⽤这些对象,除⾮您重新创建表或删除并重新创建对象,以便它们不再依赖于表。如果选择重新创建表,则它必须包含最初⽤于定义物化视图的⼦查询所选的所有列以及存储过程、函数或包中引⽤的所有列。以前授予视图、存储过程、函数或包不需要重新授予这些特权。如果该表是物化视图的主表,则仍然可以查询物化视图,但除⾮重新创建该表,以便包含物化视图定义查询所选的所有列,否则⽆法刷新该表。如果表具有物化视图⽇志,那么数据库将删除此⽇志以及与该表关联的任何其他直接路径 INSERT 刷新信息。
删除表的限制
不能直接删除嵌套表的存储表。相反,必须使⽤ ALTER TABLE ... DROP COLUMN⼦句删除嵌套表列。
不能删除引⽤分区表的⽗表。必须⾸先删除所有引⽤分区⼦表。
不能删除使⽤回闪数据存档进⾏历史跟踪的表。必须⾸先禁⽤该表使⽤回闪数据存档。
级联约束
指定 CASCADE CONSTRAINTS 以删除引⽤已删除表中的主键和唯⼀键的所有引⽤完整性约束。如果省略此⼦句,并且存在此类引⽤的完整性约束,那么数据库将返回⼀个错误,⽽不会删除表。
PURGE
如果要在单个步骤中删除表并释放与其关联的空间,请指定purge。如果指定了purge,则数据库不会将表及其依赖对象放⼊回收站。
注:不能回滚⽤purge⼦句删除的表,也不能恢复该表。
使⽤这个⼦句相当于⾸先删除表,然后从回收站清除它。这个⼦句在删除过程中省去了⼀个步骤。它还提供了增强的安全性,防⽌敏感材料出现在回收站。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论