📜  PostgreSQL – 删除表空间

📅  最后修改于: 2022-05-13 01:57:15.592000             🧑  作者: Mango

PostgreSQL – 删除表空间

在 PostgreSQL 中,DROP TABLESPACE语句用于删除表空间。

Syntax: DROP TABLESPACE [IF EXISTS] tablespace_name;

我们来分析一下上面的语法:

  • 首先,在 DROP TABLESPACE关键字后指定要删除的表空间的名称。
  • 其次,如果表空间不存在,请使用IF EXISTS选项来处理错误。

注意:需要注意的是,只有表空间所有者或超级用户才能执行DROP TABLESPACE语句。

例子:

首先我们创建一个名为gfg的新表空间 并将其映射到 C:\data\gfg目录:



CREATE TABLESPACE gfg
LOCATION 'C:\data\gfg';

现在创建一个名为db_gfg的数据库并将其表空间设置为gfg

CREATE DATABASE db_gfg 
TABLESPACE = gfg;

现在在db_gfg 中创建一个名为test的新表并将其表空间设置为gfg

CREATE TABLE test (
    ID serial PRIMARY KEY,
    title VARCHAR (255) NOT NULL
) TABLESPACE gfg;

以下语句返回gfg 中的所有对象 表空间:

SELECT
    table_space.spcname,
    class.relname
FROM
    pg_class class
JOIN pg_tablespace table_space 
    ON class.reltablespace = table_space.oid
WHERE
    table_space.spcname = 'gfg';

这将导致以下情况:

现在,如果您尝试删除gfg表空间:

DROP TABLESPACE gfg;

这将引发以下错误

由于 gfg 表空间不为空,因此无法删除该表空间。现在,登录到 Postgres 数据库并删除db_gfg数据库:

DROP DATABASE db_gfg;

现在再次删除gfg表空间:

DROP TABLESPACE gfg;

现在使用以下命令检查表空间以进行验证:

\db+

输出: