首页 > 解决方案 > 在一个脚本中更改表添加列和检查约束 - 在约束上获取无效的列名

问题描述

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

我不想添加 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]

标签: sql-server

解决方案


使用动态 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]
');

推荐阅读