When using the runOnChange=“true” tag in a change set for a view such as the following:
If you change the V_Client_Demographic.sql file then run a liquibase update command it would normally rerun this change set and that is the desired result. However if you run liquibase status first, then liquibase update the change is ignored because the liquibase status command is updating the checksum in the DATABASECHANGELOG.
This is easiest to see this behavior is to run liquibase status twice in a row after making the change to this type of change set. You will see the first status say “1 change sets have not been applied”, then the next status command will report “0 change sets have not been applied”.
I used sql profiler to verify the update statement is being sent to the database on a status call.
UPDATE [DATABASECHANGELOG] SET [MD5SUM] = ‘e962e83d2befa13db12794b756d2bc2’ WHERE ID = ‘3’ AND AUTHOR = ‘abernaps’ AND FILENAME = ‘database/ChangeLogs/r1.0/sprint2.changes.xml’