代码之家  ›  专栏  ›  技术社区  ›  Allan F

Alter Table在一个脚本中添加列并检查约束-在约束上获取无效的列名

  •  0
  • Allan F  · 技术社区  · 6 年前

    我想运行这个脚本作为另一个更大脚本的一部分。

    我不想添加GO语句,因为已定义的变量不会超过GO。

    作为单独的语句,它们可以工作,但是当作为一个整体运行时,我会得到错误:

    消息207,级别16,状态1,行4 列名“ECLIPSECapable”无效。

    ALTER TABLE [dbo].[Providers]
    ADD [ECLIPSECapable] [char](1) NULL;
    
    ALTER TABLE [dbo].[Providers]  WITH CHECK ADD  CONSTRAINT [ICProvidersECLIPSECapable] CHECK  (([ECLIPSECapable]='N' OR [ECLIPSECapable]='Y'))
    
    ALTER TABLE [dbo].[Providers] CHECK CONSTRAINT [ICProvidersECLIPSECapable]
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   David Browne - Microsoft    6 年前

    使用动态SQL将脚本分成多个批:

    exec ('
    ALTER TABLE [dbo].[Providers]
    ADD [ECLIPSECapable] [char](1) NULL;
    ');
    
    exec ('
    ALTER TABLE [dbo].[Providers]  WITH CHECK ADD  CONSTRAINT [ICProvidersECLIPSECapable] CHECK  (([ECLIPSECapable]=''N'' OR [ECLIPSECapable]=''Y''))
    ');
    
    exec ('
    ALTER TABLE [dbo].[Providers] CHECK CONSTRAINT [ICProvidersECLIPSECapable]
    ');