在我的工作中,我们目前有一些严重的痛苦推动整个环境我们的数据库更改。这个问题开始出现,当我们在现有的表中创建一个新的非空列。该SQL比较生成的脚本创建列非空的,所以它总是会失败。我希望有一些替代不必手动编辑脚本。有没有什么办法来解决这个问题?如果没有,你们怎么处理呢?

有帮助吗?

解决方案

创建表:

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

您必须手动编辑展鹏的SQL比较使它像这样的工作。

其他提示

你计划如何在填充NOT NULL列?我不知道怎样SQL比较能真正拿出一个解决方案,因为它没有办法知道你将如何填补它的方式。

您可以创建一个默认列,则只需在生成的脚本的末尾添加一个更新语句,如果你有一定的来源值正确更新列。

添加默认到新的非空列

创建一个新的NOT NULL列时,不要所有现有行得到了什么价值?如果你不知道,使列可为空。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top