CREATE TABLESPACE

Name

Synopsis

Description

CREATE TABLESPACE registers a new
cluster-wide tablespace. The tablespace name must be distinct
from the name of any existing tablespace in the database
cluster.

A tablespace allows superusers to define an alternative
location on the file system where the data files containing
database objects (such as tables and indexes) can reside.

A user with appropriate privileges can pass tablespacename to CREATE DATABASE, CREATE
TABLE, CREATE INDEX or ADD CONSTRAINT to have the data files for these
objects stored within the specified tablespace.

Parameters

tablespacename

The name of a tablespace to be created. The name cannot
begin with pg_, as such names are
reserved for system tablespaces.

username

The name of the user who will own the tablespace. If
omitted, defaults to the user executing the command. Only
superusers can create tablespaces, but they can assign
ownership of tablespaces to non-superusers.

directory

The directory that will be used for the tablespace. The
directory must be empty and must be owned by the
PostgreSQL system user.
The directory must be specified by an absolute path
name.

Notes

Tablespaces are only supported on systems that support
symbolic links.

CREATE TABLESPACE cannot be executed
inside a transaction block.

Examples

Create a tablespace dbspace at
/data/dbs:

CREATE TABLESPACE dbspace LOCATION '/data/dbs';

Create a tablespace indexspace at
/data/indexes owned by user genevieve: