Question

At my work we are currently having some serious pains pushing our database changes across environments. The issue starts to show up when we create a new non-nullable column on an existing table. The script that SQL Compare generates creates the column as non-nullable, so it will always fail. I was hoping that there was some alternative to having to manually edit the script. Is there any way to get around this? If not, how do you guys handle it?

Was it helpful?

Solution

Create a table:

create table #bingo ( id int )

Add a value:

insert into #bingo values (1)

Add a new column:

alter table #bingo add userid int

Populate the new column:

update #bingo set userid = 1 where id = 1

Change the new column to not nullable:

alter table #bingo alter column userid int not null

You would have to manually edit the RedGate Sql Compare to make it work like this.

OTHER TIPS

How do you plan on filling the NOT NULL column? I don't see how SQL Compare could really come up with a solution since it has no way of knowing how you would fill it.

You could create the column with a DEFAULT, then simply add an update statement at the end of the generated scripts to properly update the column if you have some source for the values.

add a default onto the new not null column

when creating a new not null column, what value do all the existing rows get? If you don't know, make the column nullable.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top