createView
Creates a new database view.
Note: Liquibase supports views, but does not support materialized views.
Run createView
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
Available attributes
Name | Description | Required for | Supports |
---|---|---|---|
catalogName
|
Name of the catalog |
all | |
encoding
|
Encoding used in the file specified in the |
all | |
fullDefinition
|
Set to |
all | |
path
|
Path to file containing view definition. Using the path attribute is an alternative to selectQuery . |
all | |
relativeToChangelogFile
|
Specifies whether the file path is relative to the changelog file rather than looked up in the search path. Default: |
all | |
remarks
|
A short descriptive comment |
all | |
replaceIfExists
|
Use Available in Liquibase 1.5 and later |
db2, firebird, h2, hsqldb, ingres, mariadb, mssql, mysql, oracle, postgresql, sqlite, sybase | |
schemaName
|
Name of the schema |
all | |
selectQuery
|
SQL for generating the view |
informix | all |
viewName
|
Name of the view |
all | all |
Examples
Without parenthesis:
--liquibase formatted sql
--changeset liquibase-docs:createView-example
CREATE VIEW cat.v_person AS select id,
name from person where id > 10;
With parenthesis (Liquibase 4.25.1+):
--liquibase formatted sql
--changeset liquibase-docs:createView-example
CREATE VIEW cat.v_person AS(select id,
name from person where id > 10;)
databaseChangeLog:
- changeSet:
id: createView-example
author: liquibase-docs
changes:
- createView:
catalogName: cat
encoding: UTF-8
fullDefinition: false
path: A String
relativeToChangelogFile: true
remarks: A String
replaceIfExists: false
schemaName: public
selectQuery: select id, name from person where id > 10
viewName: v_person
{
"databaseChangeLog": [
{
"changeSet": {
"id": "createView-example",
"author": "liquibase-docs",
"changes": [
{
"createView": {
"catalogName": "cat",
"encoding": "UTF-8",
"fullDefinition": false,
"path": "A String",
"relativeToChangelogFile": true,
"remarks": "A String",
"replaceIfExists": false,
"schemaName": "public",
"selectQuery": "select id, name from person where id > 10",
"viewName": "v_person"
}
}
]
}
}
]
}
To apply the selectQuery
value in XML, set it as a body of the tag:
<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="createView-example">
<createView catalogName="cat"
encoding="UTF-8"
fullDefinition="false"
remarks="A String"
replaceIfExists="false"
schemaName="public"
viewName="v_person">select id, name from person where id > 10</createView>
</changeSet>
</databaseChangeLog>
Using the path
attribute is an alternative to selectQuery
:
<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="createView-example">
<createView catalogName="cat"
encoding="UTF-8"
path="A String"
relativeToChangelogFile="true"
remarks="A String"
replaceIfExists="false"
schemaName="public"
viewName="v_person"></createView>
</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 |
Related links
- always-drop-instead-of-replace (global parameter)
--replace-if-exists-types
and--run-on-change-types
fordiff-changelog
andgenerate-changelog