2017-04-27 66 views
0

我想在同一时间添加和更新列,下面是我的查询。我不想使用NOT NULL DEFAULT约束。添加和更新同时发生无效列名sql错误

IF NOT EXISTS(SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_NAME = 'table1' AND COLUMN_NAME = 'new col') 
BEGIN 
ALTER TABLE table1 ADD "new col" varchar(MAX) 
EXEC ('UPDATE table1 SET "new col" = '''' '); 
END 

但它给我一个错误无效的列名'新的col'。

在此先感谢。

+0

这不看mysql的给我。为什么'EXEC'它在单独的会话中运行 – bansi

+0

我不确定使用'not null default'的异议是什么。 *删除*默认值和*允许*空值都是简单的元数据操作,您可以在初始“alter”后快速执行这些操作。 –

+0

我也想在将来以后放弃这一列,但是当我这样做时,我也必须放弃约束,因此我不想使用“非空”约束。 –

回答

0

如果不存在(选择从SYS.COLUMNS name其中name = 'IncOHSRepEvent' 和

的object_id =的object_id( 'Inc01_CA'))ALTER TABLE [Inc01_CA] ADD [IncOHSRepEvent]

VARCHAR(200 )NULL

请使用您的值尝试以上。此外,在上面的查询 列名= IncOHSRepEvent” 表名=‘Inc01_CA’

0
ALTER TABLE table1 ADD [new col] varchar(MAX) 
EXEC ('UPDATE table1 SET [new col] = '''' '); 

我们不能用‘列’的表名和列

+0

谢谢,这对我工作! –