Есть ли простой способ добавить собственный сценарий миграции в сценарии SQL Compare?

StackOverflow https://stackoverflow.com/questions/864107

  •  21-08-2019
  •  | 
  •  

Вопрос

На моей работе в настоящее время мы испытываем серьезные проблемы с переносом изменений нашей базы данных в разные среды.Проблема начинает проявляться, когда мы создаем новый столбец, не допускающий значения NULL, в существующей таблице.Сценарий, который генерирует SQL Compare, создает столбец как не допускающий значения NULL, поэтому он всегда будет завершаться ошибкой.Я надеялся, что есть какая-то альтернатива редактированию сценария вручную.Есть ли способ обойти это?Если нет, то как вы, ребята, с этим справляетесь?

Это было полезно?

Решение

Создайте таблицу:

create table #bingo ( id int )

Добавьте значение:

insert into #bingo values (1)

Добавьте новый столбец:

alter table #bingo add userid int

Заполните новый столбец:

update #bingo set userid = 1 where id = 1

Измените новый столбец на не обнуляемый:

alter table #bingo alter column userid int not null

Вам придется вручную отредактировать RedGate Sql Compare, чтобы он работал так.

Другие советы

Как вы планируете заполнять столбец NOT NULL?Я не понимаю, как SQL Compare может найти решение, поскольку у него нет возможности узнать, как вы его заполните.

Вы можете создать столбец со значением DEFAULT, а затем просто добавить оператор обновления в конце сгенерированных сценариев, чтобы правильно обновить столбец, если у вас есть источник значений.

добавить значение по умолчанию в новый ненулевой столбец

какое значение получают все существующие строки при создании нового ненулевого столбца?Если вы не знаете, сделайте столбец обнуляемым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top