代码之家  ›  专栏  ›  技术社区  ›  Craig

更新在同一脚本中添加的列

  •  1
  • Craig  · 技术社区  · 7 年前

        IF NOT EXISTS (SELECT * FROM   sys.columns WHERE  object_id = OBJECT_ID(N'[dbo].[MyTable]') AND name = 'MyColumn')
        BEGIN
    
            ALTER TABLE [dbo].MyTable
            ADD MyColumn INT NULL
    
    ...
    
           UPDATE MyTable SET MyColumn = MyValue
    
    END
    

    有更好的方法吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Gordon Linoff    7 年前

    由于编译的原因,这很棘手。一种解决方案是动态SQL:

    exec sp_executesql 'UPDATE MyTable SET MyColumn = MyValue';
    

        2
  •  0
  •   Hardik Sheth    7 年前

    你应该把你的更新声明放在 如果不存在 条件

    原因: 如果表中已经存在列,那么它将退出条件并执行update语句,否则它将添加列,然后执行update。看看下面的代码:

    IF NOT EXISTS (SELECT * FROM   sys.columns WHERE  object_id = 
    OBJECT_ID(N'[dbo].[MyTable]') AND name = 'MyColumn')
    BEGIN
    
        ALTER TABLE [dbo].MyTable
        ADD MyColumn INT NULL
    
    END
    
    GO
    
    UPDATE MyTable SET MyColumn = 1
    GO