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';

四、尝试删除 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 语句删除表空间。