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 identifier rules. When the parent database is not set as the default, the name must be formatted as database.name. The UPSERT and INSERT ON CONFLICT 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 primary key constraints and column family assignments. |
family\_def | An optional column family definition. 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 primary key constraint. |
select\_stmt | A selection query to provide the data. |
opt\_persistence\_temp\_table | Defines the table as a session-scoped temporary table. For more information, see Temporary Tables. Note that the LOCAL, GLOBAL, and UNLOGGED options are no-ops, allowed by the parser for PostgreSQL compatibility. Support for temporary tables is in preview. |
opt\_with\_storage\_parameter\_list | A comma-separated list of spatial index tuning parameters. 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 Spatial index tuning parameters. For an example, see Create a spatial index that uses all of the tuning parameters. |
ON COMMIT PRESERVE ROWS | This clause is a no-op, allowed by the parser for PostgreSQL compatibility. CockroachDB only supports session-scoped temporary tables, 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. |