PostgreSQL 删除表空间

在本教程中,您将学习如何使用PostgreSQL DROP TABLESPACE语句删除表空间。

摘要:在本教程中,您将学习如何使用PostgreSQL DROP TABLESPACE语句删除表空间。

PostgreSQL DROP TABLESPACE 语句介绍

该 DROP TABLESPACE 语句从当前数据库中删除一个表空间:

DROP TABLESPACE [IF EXISTS] tablespace_name;

在此语法中,您指定要在 DROP TABLESPACE 关键字后删除的表空间的名称。

IF EXISTS IF EXISTS` 当表空间不存在时,您可以使用该选项指示 PostgreSQL 发出通知而不是错误。

只有表空间所有者或超级用户才能执行 DROP TABLESPACE 删除表空间的语句。

PostgreSQL DROP TABLESPACE 示例

首先,创建一个名为的新表空间 demo 并将其映射到 c:\data\demo directory .

CREATE TABLESPACE demo 
LOCATION 'c:/data/demo';

其次,创建一个名为的新数据库 dbdemo 并将其表空间设置为 demo :

CREATE DATABASE dbdemo 
TABLESPACE = demo;

第三,创建一个名为的新表并将 test 其 dbdemo 设置 tablespace 为 demo :

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

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

SELECT
    ts.spcname,
    cl.relname
FROM
    pg_class cl
JOIN pg_tablespace ts 
    ON cl.reltablespace = ts.oid
WHERE
    ts.spcname = 'demo';

PostgreSQL Drop 表空间示例

四、尝试删除 demo 表空间:

DROP TABLESPACE demo;

PostgreSQL 发出错误:

[Err] ERROR: tablespace "demo" is not empty

因为 demo 表空间不是空的,所以不能删除。

五、登录 postgres 数据库并删除 dbdemo 数据库:

DROP DATABASE dbdemo;

您可以将数据库移动到另一个表空间,而不是删除数据库,例如, pg_default 使用ALTER TABLE语句,如下所示:

ALTER DATABASE dbdemo
SET TABLESPACE = pg_default;

六、 demo 再次删除表空间:

DROP TABLESPACE demo;

有效。该 demo 表空间已成功删除。

在本教程中,您学习了如何使用 PostgreSQL DROP TABLESPACE 语句删除表空间。