createTable
The createTable
Change Type creates a table.
Uses
You can typically use the createTable
Change Type when you want to create a table in your changelog file and then deploy it to your database. It can include columns and another values listed in this documentation.
Running the createTable
Change Type
To create a table for your database, follow these steps:
- Add the
createTable
Change Type to your changeset with the needed attributes, as shown in the examples. - Deploy your changeset by running the
update
command:
liquibase update
Now, you should see a new table.
Running the createTable
Change Type with dynamic values
If you want to set and dynamically pass a specific attribute in your changelog, you can add ${your-attribute}
to one or more of your changesets, and then run those changesets as shown in the following examples:
<changeSet id="1" author="liquibase">
<createTable tableName="department">
<column name="id" type="int">
<constraints primaryKey="true"/>
</column>
<column name="dept" type="varchar(${dep.size})">
<constraints nullable="false"/>
</column>
<column name="emp_id" type="int">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
liquibase -Ddep.size=50 update
<changeSet id="2" author="liquibase">
<createTable catalogName="department2"
remarks="A String"
schemaName="public"
tableName="person"
tablespace="${tablespace}">
<column name="address" type="varchar(255)"/>
</createTable>
</changeSet>
liquibase -Dtablespace='tablespaceQA' update
Note: For more information, see Substituting Properties in Changelogs.
Available attributes
Name | Description | Required for | Supports |
---|---|---|---|
catalogName
|
Name of the catalog |
all | |
ifNotExists
|
If |
asany, cockroachdb, db2, db2z, derby, edb, h2, hsqldb, informix, ingres, mariadb, mssql, mysql, oracle, postgresql, sqlite, sybase | |
remarks
|
A short descriptive comment |
all | |
schemaName
|
Name of the schema |
all | |
tableName
|
Name of the table |
all | all |
tablespace
|
Name of the tablespace to use to create the table in | all |
Nested tags
Name | Description | Required for | Supports | Multiple allowed |
---|---|---|---|---|
column
|
Column definitions. Note: YAML and JSON changelogs using the |
all | all | yes |

...
<changeSet author="liquibase-docs" id="createTable-example">
<createTable catalogName="department"
remarks="A String"
schemaName="public"
tableName="person"
tablespace="A String">
<column name="address" type="varchar(255)"/>
</createTable>
</changeSet>
...

...
- changeSet:
id: createTable-example
author: liquibase-docs
changes:
- createTable:
catalogName: department
columns:
- column:
name: address
type: varchar(255)
remarks: A String
schemaName: public
tableName: person
tablespace: A String
...

...
{
"changeSet": {
"id": "createTable-example",
"author": "liquibase-docs",
"changes": [
{
"createTable": {
"catalogName": "department",
"columns": [
{
"column": {
"name": "address",
"type": "varchar(255)"
}
}
],
"remarks": "A String",
"schemaName": "public",
"tableName": "person",
"tablespace": "A String"
}
}
]
}
}
...

...
--changeset liquibase-docs:createTable-example
CREATE TABLE department.person (address VARCHAR(255) NULL) COMMENT='A String';
ALTER TABLE department.person COMMENT = 'A String';
...
Database support
Database | Notes | Auto Rollback |
---|---|---|
DB2/LUW | Supported | Yes |
DB2/z | Supported | Yes |
Derby | Supported | Yes |
Firebird | Supported | Yes |
H2 | Supported | Yes |
HyperSQL | Supported | Yes |
INGRES | Supported | Yes |
Informix | Supported | Yes |
MariaDB | Supported | Yes |
MySQL | Supported | Yes |
Oracle | Supported | Yes |
PostgreSQL | Supported | Yes |
Snowflake | Supported | Yes |
SQL Server | Supported | Yes |
SQLite | Supported | Yes |
Sybase | Supported | Yes |
Sybase Anywhere | Supported | Yes |