在SQL Server 2008中,我想在表中添加一列并在之后立即对其进行更新,但前提是之前尚未创建它们。如果该列之前已创建,则我不希望运行更新。
IF NOT EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE [TABLE_NAME] = 'SETTINGS' AND [COLUMN_NAME] = 'COLOR_SCHEME') BEGIN ALTER TABLE [SETTINGS] ADD [COLOR_SCHEME] int NULL UPDATE [SETTINGS] SET [COLOR_SCHEME] = 1 END
在列添加之后放置“ GO”不起作用,因为那将不是一个完整的批处理语句,但是如果我尝试像这样运行它,则会收到错误“无效的列名’COLOR_SCHEME’”。
关于如何在运行更新时使该列存在的任何想法?
您可以尝试使用动态SQL代替alter语句:
DECLARE @SQL NVARCHAR(4000) SET @SQL='ALTER TABLE [SETTINGS] ADD [COLOR_SCHEME] int NULL' EXEC(@SQL)