添加列,然后在没有解析器抱怨的情况下在同一脚本中插入值

时间:2013-05-08 04:07:44

标签: sql-server alter

我想要做的是为列添加值。现在可能是该列尚不存在。

所以我做的是检查该列是否存在,如果不存在,我将添加它然后插入值。

IF COL_LENGTH('version', 'minor') = NULL
BEGIN
    ALTER TABLE version ADD minor INT null;
END
GO

UPDATE version SET minor= 4;

问题是解析器抱怨这一点,因为在解析时列minor不存在。

有没有办法在单个脚本中进行此传递?

1 个答案:

答案 0 :(得分:3)

使用:

SET ANSI_NULLS OFF
GO 
IF COL_LENGTH('version', 'minor') = NULL
BEGIN
    ALTER TABLE [version] ADD minor INT null;
END
GO

UPDATE [version] SET minor= 4;

OR

IF COL_LENGTH('version', 'minor') IS NULL
    BEGIN
        ALTER TABLE [version] ADD minor INT null;
    END
    GO

    UPDATE [version] SET minor= 4;

您正在尝试将NULL = NULLANSI_NULLS ON

进行比较

拉​​吉