createView

Creates a new database view.

Note: Liquibase supports views, but does not support materialized views.

Available attributes

Name Description Required for Supports
catalogName

Name of the catalog

all
encoding

Encoding used in the file specified in the path attribute.

all
fullDefinition

Set to true if selectQuery is the entire view definition. Set to false if the CREATE VIEW header should be added

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: false.

all
remarks

A short descriptive comment

all
replaceIfExists

Use CREATE OR REPLACE syntax

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

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>
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"
                        }
                    }
                ]
            }
        }
    ]
}
--liquibase formatted sql

--changeset liquibase-docs:createView-example
CREATE  VIEW  cat.v_person  AS  select  id,  
 name  from  person  where  id  >  10;

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

Related links