删除表

语法

DROP TABLE name [CASCADE | RESTRICT | CASCADE CONSTRAINTS]

说明

DROP TABLE 可从数据库中删除表。只有表的所有者可以销毁表。要清空表中的行但不销毁表,请使用 DELETEDROP TABLE 始终删除针对目标表存在的所有索引、规则、触发器和约束。

参数

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

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

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

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

示例

以下命令删除名为 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 for Oracle 将在删除 orders 表时执行下列操作之一,这取决于您指定的删除行为:

  • 如果您指定 DROP TABLE orders RESTRICT,POLARDB for Oracle 将报告错误。
  • 如果您指定 DROP TABLE orders CASCADE,POLARDB for Oracle 将删除 orders 表和 items 表。
  • 如果您指定 DROP TABLE orders CASCADE CONSTRAINTS,POLARDB for Oracle 将删除 orders 表并从 items 表中删除外键规格,但不删除 items 表。