Skip to content

Latest commit

 

History

History
304 lines (273 loc) · 9.67 KB

index.md

File metadata and controls

304 lines (273 loc) · 9.67 KB
layout title
default
Liquibase
<script> $(function() { $( "#changelog-tabs" ).tabs(); }); </script>

Source Control For Your Database: Liquibase is an open source, database-independent library for tracking, managing and applying database changes

Works with your development style

Powerful refactoring commands

Open and Extensible

Works with your development processes

  • Command Line, Ant, Maven, Spring, and Servlet integrations
  • Cluster-safe database upgrades
  • Database "diff's"
  • Database change documentation
  • Automated generation of SQL scripts for DBA code review and approval

Get Started

  1. Download Liquibase
  2. Create new changelog file in XML, YAML, JSON or SQLformat
  3. Add changeset to changelog file
  4. Run liquibase update
  5. Commit changelog file to source control
  6. Repeat
Quick Start Guide | Full Documentation
{% highlight xml %}

<preConditions>
    <runningAs username="liquibase"/>
</preConditions>

<changeSet id="1" author="nvoxland">
    <createTable tableName="person">
        <column name="id" type="int" autoIncrement="true">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="firstname" type="varchar(50)"/>
        <column name="lastname" type="varchar(50)">
            <constraints nullable="false"/>
        </column>
        <column name="state" type="char(2)"/>
    </createTable>
</changeSet>

<changeSet id="2" author="nvoxland">
    <addColumn tableName="person">
        <column name="username" type="varchar(8)"/>
    </addColumn>
</changeSet>
<changeSet id="3" author="nvoxland">
    <addLookupTable
        existingTableName="person" existingColumnName="state"
        newTableName="state" newColumnName="id" newColumnDataType="char(2)"/>
</changeSet>

{% endhighlight %}

{% highlight yaml %} databaseChangeLog: - preConditions: - runningAs: username: liquibase
  • changeSet: id: 1 author: nvoxland changes: - createTable: tableName: person columns: - column: name: id type: int autoIncrement: true constraints: primaryKey: true nullable: false - column: name: firstname type: varchar(50) - column: name: lastname type: varchar(50) constraints: nullable: false - column: name: state type: char(2)

  • changeSet: id: 2 author: nvoxland changes: - addColumn: tableName: person columns: - column: name: username type: varchar(8)

  • changeSet: id: 3 author: nvoxland changes: - addLookupTable: existingTableName: person existingColumnName:state newTableName: state newColumnName: id newColumnDataType: char(2)

{% endhighlight %}

{% highlight json %} { "databaseChangeLog": [ { "preConditions": [ { "runningAs": { "username": "liquibase" } } ] },
    {
        "changeSet": {
            "id": "1",
            "author": "nvoxland",
            "changes": [
                {
                    "createTable": {
                        "tableName": "person",
                        "columns": [
                            {
                                "column": {
                                    "name": "id",
                                    "type": "int",
                                    "autoIncrement": true,
                                    "constraints": {
                                        "primaryKey": true,
                                        "nullable": false
                                    },
                                }
                            },
                            {
                                "column": {
                                    "name": "firstname",
                                    "type": "varchar(50)"
                                }
                            },
                            {
                                "column": {
                                    "name": "lastname",
                                    "type": "varchar(50)"
                                    "constraints": {
                                        "nullable": false
                                    },
                                }
                            },
                            {
                                "column": {
                                    "name": "state",
                                    "type": "char(2)"
                                }
                            }
                        ]
                    }
                }
            ]
        }
    },

    {
        "changeSet": {
            "id": "2",
            "author": "nvoxland",
            "changes": [
                {
                    "addColumn": {
                        "tableName": "person",
                        "columns": [
                            {
                                "column": {
                                    "name": "username",
                                    "type": "varchar(8)"
                                }
                            }
                       ]
                    }
                }
            ]
        }
    },

    {
        "changeSet": {
            "id": "3",
            "author": "nvoxland",
            "changes": [
                {
                    "addLookupTable": {
                        "tableName": "person",
                        "existingTableName": "person",
                        "existingColumnName":"state",
                        "newTableName": "state",
                        "newColumnName": "id",
                        "newColumnDataType": "char(2)",
                    }
                }
            ]
        }
    }
]

}

{% endhighlight %}

{% highlight sql %} --liquibase formatted sql

--changeset nvoxland:1 create table person ( id int not null primary key, firstname varchar(80), lastname varchar(80) not null, state varchar(2) );

--changeset nvoxland:2 alter table person add column username varchar(8)

{% endhighlight %}