This is the point where a branch is merged to trunk and is getting tested. As opposed to DEV, here we have a real data set copied from the PROD. At this point the customer is able, in fact is being asked, to view the changes and/or fixes that were developed for the current release before going on the PROD machine.
Only the code available on trunk can be tested on staging and CodePax is configured in such a way to allow us only update operations without branch or tag switches.
Once the code is declared stable, a tag is created which marks a version number in application life-cycle.
Here only the change scripts with the version number higher than DB version are being executed. A change script can be applied only once no matter if it successfully got executed or ended up with a SQL error. While is very less likely to have change scripts running in errors, they are not applied again because they might be incompatible with the rest of the change scripts that were executed in the same batch.
Another key aspect of the STG server is that we are using it to generate the baselines whenever the developer/DBA thinks it is necessary. There is a good practice to always keep you database data in sync with the PROD environment to be able to see how the application behaves with the real data set.
Steps:
1. the change scripts with the version number higher than DB version are being executed
2. then the data change scripts with the version number higher than DB version are being executed