九月 25, 2023
摘要:在本教程中,您将学习如何使用 PostgreSQL 的DROP TABLESPACE
语句删除表空间。
目录
PostgreSQL DROP TABLESPACE 语句简介
DROP TABLESPACE
语句从当前数据库中删除表空间:
DROP TABLESPACE [IF EXISTS] tablespace_name;
在此语法中,您在DROP TABLESPACE
关键字后指定要删除的表空间的名称。
当表空间不存在时,您可以使用IF EXISTS
选项指示 PostgreSQL 发出通知而不是错误。
只有表空间所有者或超级用户才能执行删除表空间的DROP TABLESPACE
语句。
PostgreSQL DROP TABLESPACE 示例
首先,创建一个新表空间,名为demo
,并将其映射到c:\data\demo
目录。
CREATE TABLESPACE demo
LOCATION 'c:/data/demo';
其次,创建一个新数据库,名为dbdemo
,并将其表空间设置为demo
:
CREATE DATABASE dbdemo
TABLESPACE = demo;
第三步,在dbdemo
数据库中创建一个新表,名为test
,并将其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;
您不一定要删除数据库,也可以通过使用 ALTER DATABASE 语句,将其移动到另一个表空间,例如pg_default
,如下所示:
ALTER DATABASE dbdemo
SET TABLESPACE = pg_default;
第六步,再次删除demo
表空间:
DROP TABLESPACE demo;
完成了。demo
表空间已成功删除。
在本教程中,您学习了如何使用 PostgreSQL 的DROP TABLESPACE
语句删除表空间。