CREATE TABLE... AS creates a new table from a .
The CREATE TABLE AS statement performs a schema change. For more information about how online schema changes work in CockroachDB, see .
Intended use
Tables created withCREATE TABLE... AS are intended to persist the result of a query for later reuse.
This can be more efficient than a when the following two conditions are met:
- The result of the query is used as-is multiple times.
- The copy needs not be kept up-to-date with the original table over time.
The default rules for apply.
Required privileges
The user must have theCREATE on the parent database.
Synopsis
- Basic
- Expanded
Parameters
| Parameter | Description |
|---|---|
IF NOT EXISTS | Create a new table only if a table of the same name does not already exist in the database; if one does exist, do not return an error. Note that IF NOT EXISTS checks the table name only; it does not check if an existing table has the same columns, indexes, constraints, etc., of the new table. |
table\_name | The name of the table to create, which must be unique within its database and follow these . When the parent database is not set as the default, the name must be formatted as database.name. The and statements use a temporary table called excluded to handle uniqueness conflicts during execution. It’s therefore not recommended to use the name excluded for any of your tables. |
column\_name | The name of the column you want to use instead of the name of the column from select\_stmt. |
create\_as\_col\_qual\_list | An optional column definition, which may include and . |
family\_def | An optional . Column family names must be unique within the table but can have the same name as columns, constraints, or indexes. |
create\_as\_constraint\_def | An optional . |
select\_stmt | A to provide the data. |
opt\_persistence\_temp\_table | Defines the table as a session-scoped temporary table. For more information, see . Note that the LOCAL, GLOBAL, and UNLOGGED options are no-ops, allowed by the parser for PostgreSQL compatibility. Support for temporary tables is . |
opt\_with\_storage\_parameter\_list | A comma-separated list of . Supported parameters include fillfactor, s2\_max\_level, s2\_level\_mod, s2\_max\_cells, geometry\_min\_x, geometry\_max\_x, geometry\_min\_y, and geometry\_max\_y. The fillfactor parameter is a no-op, allowed for PostgreSQL-compatibility. For details, see . For an example, see . |
ON COMMIT PRESERVE ROWS | This clause is a no-op, allowed by the parser for PostgreSQL compatibility. CockroachDB only supports session-scoped , and does not support the clauses ON COMMIT DELETE ROWS and ON COMMIT DROP, which are used to define transaction-scoped temporary tables in PostgreSQL. |
Known limitations
The of tables created withCREATE TABLE... AS is not automatically derived from the query results. You must specify new primary keys at table creation. For examples, see .

