更新时间:2024-11-12 GMT+08:00
DROP TABLE
功能描述
删除指定的表。
注意事项
- DROP TABLE删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。
- 表的所有者、表所在模式的所有者、被授予了表的DROP权限的用户或被授予DROP ANY TABLE权限的用户,有权删除指定表,三权分立关闭时,系统管理员默认拥有该权限。
- DROP TABLE时,如果被指删除的表作为外键表引用了另一张表,会级联删除被引用表上的触发器,此时需要对被引用表加八级锁,可能造成业务的阻塞。
语法格式
DROP TABLE [ IF EXISTS ] { [schema.]table_name } [, ...] [ CASCADE | RESTRICT ] [ PURGE ];
参数说明
- IF EXISTS
如果指定的表不存在,则发出一个notice而不是抛出一个error。
- schema
模式名称。
- table_name
表名称。
- CASCADE | RESTRICT
- CASCADE:表示允许级联删除依赖于该表的对象(比如视图、触发器、索引;注:关联的表对象无法被级联删除)。
- RESTRICT:表示有依赖于该表的对象存在时,该表无法被删除。此选项为缺省值。
- PURGE
该参数表示即使开启回收站功能,使用DROP TABLE删除表时,也会直接物理删除表,而不是将其放入回收站中。
示例
--创建test表。 gaussdb=# CREATE TABLE test(c1 int, c2 int); --删除test表。 gaussdb=# DROP TABLE IF EXISTS test; --创建test1表。 gaussdb=# CREATE TABLE test1(c1 int, c2 int); --创建v_test1视图。 gaussdb=# CREATE VIEW v_test1 AS SELECT * FROM test1 WHERE c1 < 20; --删除表报错。 gaussdb=# DROP TABLE test1; ERROR: cannot drop table test1 because other objects depend on it DETAIL: view v_test1 depends on table test1 HINT: Use DROP ... CASCADE to drop the dependent objects too. --使用CASCADE参数删除test1表,会级联删除掉视图。 gaussdb=# DROP TABLE test1 CASCADE; NOTICE: drop cascades to view v_test1 DROP TABLE
相关链接
父主题: D