CREATE OR ALTER instead of CREATE
OnanSalad
Posts: 5 Bronze 1
We're evaluating SQL Source Control against our current source control process and one of our requirements is that SQL object scripts in the repository use CREATE OR ALTER where applicable instead of the default CREATE. I expected to find this under "Comparison Options | Behavior," but I'm not seeing it there. Is SQL Source Control not compatible with CREATE OR ALTER syntax for applicable objects like stored procedures, functions, and views?
Tagged:
Best Answer
-
David Atkinson Posts: 1,458 Rose Gold 2Hi - thanks for evaluating SQL Source Control. You're right to look under comparison options, as this is where the option would be, as it inherits from capabilities offered in SQL Compare. Unfortunately, SQL Compare doesn't offer this just yet, but it's on the roadmap and I'd expect it early next year.
What is the reason you need CREATE OR ALTER today? Even if the scripts are stored as CREATEs, these will be converted to ALTERs as needed when you deploy the changes from source control to your target databases using SQL Compare.David Atkinson
Product Manager
Redgate Software
Answers
Product Manager
Redgate Software
I also run into this problem doing major refactorings (using SQL Compare to script out specific objects - comparing it to an empty database and doing text replace etc on the scripts) where i have to change all create statements to alter statements.
Any updates on the roadmap?
Thanks for letting us know about your use case. This enhancement is up for consideration and I've updated the request with the use case info you provided. It's just up for consideration and not something we're actively working on presently, but understanding customer impact definitely helps us.
Kendra
Right now I wanted to regenerate some scripts because SQLCompare shows differences - for instance because of trailing semicolon after END of Stored Procedure.
Regenerating script with SQL Compare removes existing "OR ALTER" statements even if there was no difference before. Code Reviewers ask why I removed this.
Product Manager
Redgate Software
Are you generating a deployment script, or are you creating a "scripts folder" from a database?
Product Manager
Redgate Software
Product Manager
Redgate Software
for regular deployments to staging and production we use deployment scripts generated by SQLCompare. Deployment Scripts are executed by liquibase containers in Kubernetes.
(We did not check if switching to free flyway version will have advantages. Liquibase is company standard, used by other teams which are not using Toolbelt&SQLCompare, too)
For development of existing Procs/Views we open file from scripts folder, modify and execute on development instance. Thus Procs,Views,... need to have CREATE OR ALTER. New Procs/Views often are created in development instance and later are generated to scripts folder with SQLCompare
Sometimes it's necessary to create existing scripts back to scripts folder, for instance because of tiny differences in the database representation.
Flyway Teams allows for a workflow whereby you can modify the schema model (the name for the scripts folder in Flyway) and apply changes from the schema model to the database. You can also make changes in the database and sync these back to the schema model with just a button click. Behind the scenes SQL Compare tech is being used to generate the right script to apply changes to and from the schema model. These schema model scripts are only meant as a definition of the schema state and not intended to be run directly against a database.
Product Manager
Redgate Software