How should procedural database code like stored procedures be managed with a database migration tool like Flyway?
Unlike DDL I would not want to see changes to a stored procedure stored within multiple database migration files. How can procedural code be managed within a single file under source control, but also take advantage of database migrations with a tool like Flyway?
There is no special construct in the framework to deal with this. Mainly because I haven't figured out a way to do this that pleases me.
Update: Repeatable scripts are now fully supported as of Flyway 4.0. See https://flywaydb.org/documentation/migrations#repeatable-migrations
What we do is:
- Have a complete CREATE OR REPLACE Flyway script for stored procedures whenever they change.
- Store each of the stored procedures in a separate area in source control, so that changes are tracked and differences are computable.
Not a great solution, and a pain to remember each time, but it gets past some of the limitations of the tool.