Modifying Generated SQL

Although LiquiBase supports most standard SQL statements with its change tags, there are times when the generated SQL needs to be slightly different for your particular needs. Examples include changing datatypes or adding additional vendor-specific clauses such as “ENGINE INNODB” to CREATE TABLE statements. Since 1.9

Sample

<changeSet id="1" author="nvoxland">
    <createTable tableName="person">
        <column name="id" type="bigint"/>
        <column name="firstname" type="varchar(255)"/>
        <column name="lastname" type="varchar(255)"/>
    </createTable>
    <modifySql>
         <replace replace="bigint" with="long"/>
    </modifySql>
    <modifySql dbms="mysql">
         <append value=" engine innodb"/>
    </modifySql>
</changeSet>

Available Attributes

dbms List of database types to apply the modification(s) to. If not specified, modification is applied on all runs
context List of contexts in which to run the sql modification. If not specified, is applied in all contexts Since 2.0
applyToRollback Should the sql modification be applied to rollback statements? Default='false' Since 2.0

Available Sub-Tags

prepend

Adds SQL to the beginning of the statement.

Available Attributes

value Text to add to beginning of statement

append

Adds SQL to the end of the statement.

Available Attributes

value Text to add to end of statement

replace

Replaces all instances of the text specified.

Available Attributes

replace Text to replace
with Text to replace with

regExpReplace

Replaces all instances of the regular expression specified.

Available Attributes

replace Regular expression specifying text to replace
with Text to replace with