语法格式
删除数据库表的 SQL 命令如下:
DROP TABLE [模式名>.]表名> [RESTRICT|CASCADE];
表删除有两种方式:RESTRICT/CASCADE 方式,其中 RESTRICT 为默认值。如果以 RESTRICT 方式删除该表,要求该表上已不存在任何视图以及参照完整性约束,否则 DM 返回错误信息,而不删除该表。如果以 CASCADE 方式删除该表,将删除表中唯一列上和 主关键字上的参照完整性约束,当设置 dm.ini 中的参数 DROP_CASCADE_VIEW 值为 1 时,还可以删除所有建立在该表上的视图。
应用举例
在 DMHR 模式下,EMP 表(员工表)参照了 DEPT 表(部门表),在这里 DEPT 称之 为被参照表,EMP 表称之为参照表。
【例 1】删除被参照表。删除 DMHR 模式下的 DEPT(部门表)。
SQL> DROP TABLE dmhr.dept;
DROP TABLE dmhr.dept;
第 1 行附近出现错误[-2639]:试图删除被依赖对象[DEPT].
这项任务执行出现错误,原因是不能简单直接删除被参照表。
【例 2】删除参照表。删除 DMHR 模式下的 EMP 表(员工表)。
SQL> DROP TABLE dmhr.emp;
表删除后,与被参照表的参照完整性约束也一同被删除。
【例 3】在删除 EMP 表的基础上,再次删除 DEPT 表。
SQL> DROP TABLE dmhr.dept;
由于没有与 DEPT 关联的引用约束,所以该任务能够顺利执行。
附加说明
① 该表删除后,在该表上所建索引也同时被删除。
② 该表删除后,所有用户在该表上的权限也自动取消,以后系统中再创建的同名基 表是与该表毫无关系的表。