对于 Sql Server 2005 和 2008,我想检查给定表上是否已经存在列,如果不存在则创建它。这个新列应该有一个 ExistingColumn 的默认值。目前我需要使用动态 sql 来填充新列,因为 sql server 会抱怨语法错误。
这是当前的sql server代码:
IF NOT EXISTS (SELECT TOP 1 1 FROM sys.columns WHERE [name] = N'NewColumn' AND OBJECT_ID = OBJECT_ID(N'ExistingTable'))
BEGIN
ALTER TABLE [dbo].[ExistingTable] ADD [NewColumn] VARCHAR(50) NULL;
exec sp_executesql N'UPDATE [dbo].[ExistingTable] SET NewColumn = ExistingColumn'
ALTER TABLE [dbo].[ExistingTable] ALTER COLUMN [NewColumn] VARCHAR(50) NOT NULL
END
GO
有没有其他方法可以在不求助于动态 sql 的情况下解决这个问题?