DROP TABLE命令用于删除整个表及表内的所有数据。

语法

DROP TABLE name [CASCADE | RESTRICT | CASCADE CONSTRAINTS]

说明

DROP TABLE 可从数据库中删除表,当您删除一个表时,这个表的所有分区或子分区也会被删除。要清空表中的行但不销毁表,请使用 DELETEDROPTABLE 始终删除针对目标表存在的所有索引、规则、触发器和约束。

要使用DROP TABLE命令,您必须是分区根的拥有者、拥有表的小组中的成员、模式拥有者或是数据库的超级用户。

参数

参数 说明
name 要删除的表或分区表的名称(可能是schema限定的)。

包含 RESTRICT 关键字可指定在存在任何依赖于表的对象的情况下,服务器应拒绝将其删除。这是默认行为;DROP TABLE 命令将在存在任何依赖于表的对象的情况下报告错误。

包含 CASCADE 子句可删除所有依赖于表的对象。

包含 CASCADE CONSTRAINTS 子句可指定PolarDB-O应删除所指定表的所有依赖约束(不包括其他对象类型)。

示例

以下命令删除名为 emp、没有依赖项的表:

DROP TABLE emp;

DROP TABLE 命令的结果会有所不同,这取决于表是否有任何依赖项,您可以通过指定删除行为来控制结果。例如,如果您创建 orders 和 items 这两个表,而 items 表依赖于 orders 表:

CREATE TABLE orders
  (order_id int PRIMARY KEY, order_date date, …);
CREATE TABLE items
  (order_id REFERENCES orders, quantity int, …);

PolarDB-O 将在删除 orders 表时执行下列操作之一,这取决于您指定的删除行为:

  • 如果您指定 DROPTABLE orders RESTRICT,PolarDB-O 将报告错误。
  • 如果您指定 DROPTABLE orders CASCADE,PolarDB-O 将删除 orders 表和 items 表。
  • 如果您指定 DROPTABLE orders CASCADE CONSTRAINTS,PolarDB-O 将删除 orders 表并从 items 表中删除外键规格,但不删除 items 表。

更多关于DROP TABLE命令的信息,请参见PostgreSQL核心文件