DB2 V10.1 for Linux, UNIX, and Windows

删除表

可以使用 DROP TABLE 语句删除表。

关于此任务

当删除一个表时,也会删除 SYSCAT.TABLES 系统目录中包含有关该表的信息的那一行,并会影响从属于该表的任何其他对象。例如:
  • 会删除所有的列名。
  • 会删除基于该表的任何列创建的索引。
  • 将基于该表的所有视图标记为不可用。
  • 对删除的表和从属视图的所有特权被隐式撤销。
  • 会删除在其中该表为父表或从属表的所有引用约束。
  • 从属于删除的表的所有程序包和高速缓存的动态 SQL 和 XQuery 语句被标记为无效,且该状态会保持至重新创建了从属对象为止。这包括这样一些程序包,它们从属于将被删除的层次结构中子表上的任何超表。
  • 其引用的作用域为删除的表的任何引用列变为“无作用域”。
  • 因为可以取消定义别名,所以该表上的别名定义不受影响
  • 将从属于该删除的表的所有触发器标记为不可用。

限制

如果一个表有子表,那么不能删除该表。

过程

结果

删除表层次结构与删除特定的表之间有一些差别:
  • DROP TABLE HIERARCHY 不会激活个别的 DROP TABLE 语句将激活的删除触发器。例如,删除个别子表将激活其超表上的删除触发器。
  • DROP TABLE HIERARCHY 不为删除的表的个别行建立日志条目。而是将该层次结构的删除 作为单个事件记录。