我有一个要求,我需要改变(添加2列),然后更新同一个表.
这是我试过的查询:
ALTER TABLE A ADD c1 int,c2 varchar(10) UPDATE A set c1 = 23,c2 = 'ZZXX'
我需要一次运行上述两个查询.
我正在使用Talend ETL工具,在这里我们有一个组件tMssqlrow,它允许我们运行多个查询(我在单个组件中使用10到15个更新查询).
但上述查询不起作用.
我在DataBase Microsoft sql中测试过.我得到以下错误:
Msg 207,Level 16,State 1,Line 5
Invalid column name ‘c1’. Msg 207,
Level 16,Line 5
Invalid column name ‘c2’.
任何人都可以帮我解决这个问题.
解决方法
您不能在单个语句(或批处理)中完成此操作,并且您使用的工具似乎不支持将GO作为批处理分隔符.
您可以使用EXEC在子批中运行它.
ALTER TABLE A ADD c1 INT,c2 VARCHAR(10); EXEC(' UPDATE A SET c1 = 23,c2 = ''ZZXX''; ');
或者您可以借助一些默认约束在单个语句中实现类似的结果.
ALTER TABLE A ADD c1 INT NULL CONSTRAINT DF_A_c1 DEFAULT 23 WITH VALUES,c2 VARCHAR(10) CONSTRAINT DF_A_c2 NULL DEFAULT 'ZZXX' WITH VALUES;