skip to content »

Changesets and updating work

changesets and updating work-26

Each change Set tag is uniquely identified by the combination of the “id” tag, the “author” tag, and the changelog file classpath name.The id tag is only used as an identifier, it does not direct the order that changes are run and does not even have to be an integer.

Each changeset has zero, one or two parent changesets.Used primarily when you need to change a change Set and don't want errors thrown on databases on which it has already run (not a recommended procedure).Since 1.7 When Liquibase reaches a change Set, it computes a check sum and stores it in the “databasechangelog”.When the migration step is running, it checks the database type against this attribute. If set to false and an error occurs part way through running a change Set containing multiple statements, the Liquibase databasechangelog table will be left in an invalid state.Valid database type names are listed on the supported databases page Should the change Set be ran as a single transaction (if possible)? Since 1.9 List checksums which are considered valid for this change Set, regardless of what is stored in the database.If you do not know or do not wish to save the actual author, simply use a placeholder value such as “UNKNOWN”.

As Liquibase executes the database Change Log, it reads the change Sets in order and, for each one, checks the “databasechangelog” table to see if the combination of id/author/filepath has been run.

A good example of when you would want this is stored procedures.

If you copy the entire text of the stored procedure to a new change Set each time you make a change you will not only end up with a very long change Log, but you will lose the merging and diff-ing power of your source control.

If it has been run, the change Set will be skipped unless there is a true “run Always” tag.

After all the changes in the change Set are run, Liquibase will insert a new row with the id/author/filepath along with an MD5Sum of the change Set (see below) in the “databasechangelog”.

The value of storing the check sum is so that Liquibase can know if someone changed the changes in the change Set since it was run.