小编典典

如何在同一批处理语句中更新新添加的列

sql

在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’”。

关于如何在运行更新时使该列存在的任何想法?


阅读 150

收藏
2021-04-28

共1个答案

小编典典

您可以尝试使用动态SQL代替alter语句:

DECLARE @SQL NVARCHAR(4000)
SET @SQL='ALTER TABLE [SETTINGS] ADD [COLOR_SCHEME] int NULL'
EXEC(@SQL)
2021-04-28