添加额外的列和约束,但在更新列时失败

时间:2018-04-12 22:29:27

标签: sql sql-server-2008 sql-update sql-server-2014 alter-table

我试图在SSMS中的SQL Server 2008上运行以下查询,但它在第三个查询上经常失败,说明: 列名称无效' hasCodeMappingDefaults'。

BEGIN
ALTER TABLE [SIntegrationProvider]
ADD [hasCodeMappingDefaults] BIT NULL;
END

BEGIN
ALTER TABLE [SIntegrationProvider]
ADD CONSTRAINT [DF_SIntegrationProvider_hasCodeMappingDefaults]  DEFAULT ((1)) FOR [hasCodeMappingDefaults];
END

BEGIN
UPDATE [SIntegrationProvider]
SET [hasCodeMappingDefaults] = 1
WHERE [provider] = 'EmployeeNavigator';
END

当每个查询按照它们的工作单独运行时,我只是无法弄清楚为什么我不能运行所有三个组合(这需要作为更大的脚本的一部分来完成)。

1 个答案:

答案 0 :(得分:0)

实际上我认为我可能已经找到了问题,这样做似乎解决了这个问题:

ALTER TABLE [SIntegrationProvider]
ADD [hasCodeMappingDefaults] BIT NULL
GO

ALTER TABLE [SIntegrationProvider]
ADD CONSTRAINT [DF_SIntegrationProvider_hasCodeMappingDefaults]  DEFAULT ((1)) FOR [hasCodeMappingDefaults]
GO

-- Set the new value for ENav
IF EXISTS(SELECT COLUMN_NAME
      FROM   INFORMATION_SCHEMA.COLUMNS
      WHERE  TABLE_NAME = 'SIntegrationProvider'
             AND COLUMN_NAME = 'hasCodeMappingDefaults') 
UPDATE [SIntegrationProvider]
SET [hasCodeMappingDefaults] = 1
WHERE [provider] = 'EmployeeNavigator';