Sql server o基于Phills答案的工作。关键是在预处理步骤中清除表中的任何数据。这显然意味着根据您的结构复制数据,并可能删除和重新创建外键以及检查约束等,但毕竟这是可以做到的。你一直是v。在填写过程中有助于填空。感谢您的回复。我一直在尝试这一点,现在已经按照你描述的
Sql server o基于Phills答案的工作。关键是在预处理步骤中清除表中的任何数据。这显然意味着根据您的结构复制数据,并可能删除和重新创建外键以及检查约束等,但毕竟这是可以做到的。你一直是v。在填写过程中有助于填空。感谢您的回复。我一直在尝试这一点,现在已经按照你描述的,sql-server,database-project,sql-server-data-tools,Sql Server,Database Project,Sql Server Data Tools,o基于Phills答案的工作。关键是在预处理步骤中清除表中的任何数据。这显然意味着根据您的结构复制数据,并可能删除和重新创建外键以及检查约束等,但毕竟这是可以做到的。你一直是v。在填写过程中有助于填空。感谢您的回复。我一直在尝试这一点,现在已经按照你描述的方式工作了。这里的关键点是,为了能够修改表,表中必须有零行。最后,我没有检查版本,而是使用表结构上的信息模式视图来确定是否应该更改任何内容。很好:)请阅读下面的评论“这显然意味着根据您的结构复制数据,并可能删除和重新创建外键和检查约束等”。这是
o基于Phills答案的工作。关键是在预处理步骤中清除表中的任何数据。这显然意味着根据您的结构复制数据,并可能删除和重新创建外键以及检查约束等,但毕竟这是可以做到的。你一直是v。在填写过程中有助于填空。感谢您的回复。我一直在尝试这一点,现在已经按照你描述的方式工作了。这里的关键点是,为了能够修改表,表中必须有零行。最后,我没有检查版本,而是使用表结构上的信息模式视图来确定是否应该更改任何内容。很好:)请阅读下面的评论“这显然意味着根据您的结构复制数据,并可能删除和重新创建外键和检查约束等”。这是真的-尽管该细节可能与您最初的问题不同,但对于任何未来的读者来说都是好消息。这样做,您将无法回滚更改
if exists (select * from information_schema.columns where table_name = 'foo' and column_name = 'bar') BEGIN
alter table foo drop constraint DF_foo_bar
alter table foo drop column bar
END
IF EXISTS (select top 1 1 from [dbo].[Table]) RAISERROR ('Rows were detected. The schema update is terminating because data loss might occur.', 16, 127)
IF VersionNumber < 2.8
BEGIN
ALTER TABLE X DROP COLUMN Y
END
if(Object_ID('TempDB..#Foo') is not null)
begin
drop table #Foo
end
if exists (
select *
from sys.columns
where Name = 'Bar'
and Object_ID = Object_ID('Foo')
)
begin
select * into #Foo
from Foo
alter table #Foo drop column Bar
-- Now that we've made a complete backup of Foo, we can delete all its data
delete Foo
end
if(Object_ID('TempDB..#Foo') is not null)
begin
insert into Foo
select * from #Foo
drop table #Foo
end