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 run this Change Type, follow these steps:
- Add the Change Type to your changeset, as shown in the examples on this page.
- Specify any required attributes. Use the table on this page to see which ones your database requires.
- 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, postgresql, sqlite, sybase | |
remarks
|
A short descriptive comment |
all | |
rowDependencies
|
Liquibase 4.29.0+. In an Oracle database, specifies whether to create the table with row-level dependency tracking. If |
oracle | |
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 | |
tableType
|
Liquibase 4.19.0+. Allows users to define tables with modifiers of the format: |
h2, hana, oracle, mariadb, mysql, postgresql, snowflake |
Nested tags
Name | Description | Required for | Supports | Multiple allowed |
---|---|---|---|---|
column
|
Column definitions. Note: YAML and JSON changelogs using the |
all | all | yes |
Examples
--liquibase formatted sql
--changeset liquibase-docs:createTable-example
CREATE TABLE department.person (address VARCHAR(255) NULL) COMMENT='A String';
ALTER TABLE department.person COMMENT = 'A String';
databaseChangeLog:
- 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
{
"databaseChangeLog": [
{
"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"
}
}
]
}
}
]
}
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd
http://www.liquibase.org/xml/ns/pro
http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd">
<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>
</databaseChangeLog>
Database support
Database | Notes | Auto Rollback |
---|---|---|
DB2/LUW | Supported | Yes |
DB2/z | Supported | Yes |
Derby | Supported | Yes |
Firebird | Supported | Yes |
Google BigQuery | 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 |