CREATE TABLESPACE
是一个用于定义表空间的 DDL 命令。
CREATE TABLESPACE
在PostgreSQL 8.0 中添加。
更改历史
- PostgreSQL 14
CREATE TABLESPACE ... OWNER CURRENT_ROLE
选项已添加(提交 45b98057)
- PostgreSQL 9.5
CREATE TABLESPACE ... OWNER { CURRENT_USER | SESSION_USER }
选项已添加(提交 31eae602)
- PostgreSQL 9.4
CREATE TABLESPACE ... WITH ( 选项 )
语法已添加(提交 5254958e)
- PostgreSQL 8.0
- 已添加(提交 2467394e)
示例
表空间目录必须存在
postgres=# CREATE TABLESPACE foo LOCATION '/tmp/tblspc_test'; ERROR: directory "/tmp/tblspc_test" does not exist
并且必须由运行 PostgreSQL 的系统用户拥有
postgres=# CREATE TABLESPACE foo LOCATION '/tmp/tblspc_test'; ERROR: could not set permissions on directory "/tmp/tblspc_test": Operation not permitted
创建成功后
postgres=# CREATE TABLESPACE foo LOCATION '/tmp/tblspc_test'; CREATE TABLESPACE
从 pg_tblspc
目录创建一个指向指定表空间目录 的符号链接
$ ls -l /var/lib/pgsql/data/pg_tblspc/ total 0 lrwxrwxrwx 1 postgres postgres 16 Nov 6 13:40 16495 -> /tmp/tblspc_test
尝试在现有的表空间目录中创建表空间
postgres=# CREATE TABLESPACE foo1 LOCATION '/tmp/tblspc_test'; ERROR: directory "/tmp/tblspc_test/PG_14_202010291" already in use as a tablespace
参考文献
- PostgreSQL 文档: CREATE TABLESPACE