Let me rephrase your question: What is the best way to deploy schema changes?
There is one big factor that you need to consider when you deploy schema changes: The CRC - usually you are not deploying source code that needs to be compiled at each site to which you deploy. Instead, you deploy the .r files and therefore the CRC of the database against which you compile your programs must match the CRC of the target database of deployment after the schema changes have been applied there.
To cope with that we implemented a process that involves several databases:
- Modify the database schema on your local development database located on your local machine.
- Create a delta data definition file.
- Use that delta definition file to deploy the schema change to the central development database located on the development server.
- A new release is extracted from the source code management system.
- Create a delta data definition file between the central development database and a so-called CRC database, also located on the development server, that solely holds the database schema - no data.
- Use that delta definition file to deploy the schema change to the CRC database.
- Compile the release against the CRC database.
- Deploy the compiled programs and the delta data definition file to the relevant sites.
Following that process we never had any issue on deploying database schema changes together with the compiled programs. I'm not saying it is the only way - but it works for us without a fuzz as long as the developers adhere to it.
Heavy Regards, RealHeavyDude.