3

在我的工作中,我们目前在推动跨环境的数据库更改时遇到了一些严重的问题。当我们在现有表上创建新的不可为空的列时,问题开始出现。SQL 比较生成的脚本将该列创建为不可为空,因此它总是会失败。我希望有一些替代手动编辑脚本的方法。有没有办法解决这个问题?如果不是,你们是怎么处理的?

4

3 回答 3

0

你打算如何填充 NOT NULL 列?我看不出 SQL Compare 是如何真正提出解决方案的,因为它无法知道您将如何填充它。

您可以使用 DEFAULT 创建列,然后只需在生成的脚本末尾添加一条更新语句即可在您有一些值的来源时正确更新该列。

于 2009-05-14T16:27:34.987 回答
0

创建表:

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 以使其像这样工作。

于 2009-05-14T19:55:56.747 回答
0

在新的非空列上添加默认值

创建新的非空列时,所有现有行都获得什么值?如果您不知道,请将该列设为可为空。

于 2009-05-14T20:51:26.333 回答