Rag*_*ath 17 sql database sql-server etl talend
我有一个要求,我需要更改(添加2列),然后更新同一个表.
这是我试过的查询:
ALTER TABLE A
ADD c1 int,c2 varchar(10)
UPDATE A set c1 = 23, c2 = 'ZZXX'
Run Code Online (Sandbox Code Playgroud)
我需要一次运行上面两个查询.
我正在使用Talend ETL工具,在这里我们有一个组件tMssqlrow,它允许我们运行多个查询(我在单个组件中使用10到15个更新查询).
但上面的查询不起作用.
我在DataBase Microsoft SQL中测试过.我收到以下错误:
Msg 207,Level 16,State 1,Line 5
列名称"c1"无效.消息207,
16级,1号,5号线
列名称"c2"无效.
任何人都可以帮我解决这个问题.
Mar*_*ith 29
您无法在单个语句(或批处理)中完全执行此操作,并且您使用的工具似乎不支持GO
批处理分隔符.
您可以使用EXEC
它在子批处理中运行它.
ALTER TABLE A
ADD c1 INT, c2 VARCHAR(10);
EXEC('
UPDATE A
SET c1 = 23,
c2 = ''ZZXX'';
');
Run Code Online (Sandbox Code Playgroud)
注意:查询中的所有单引号都需要加倍,如上所述,以便在字符串文字中对它们进行转义.
或者,您可以借助一些默认约束在单个语句中实现类似的结果.
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;
Run Code Online (Sandbox Code Playgroud)
但这与原始查询不完全相同,因为默认约束将被遗留,可能需要删除.
归档时间: |
|
查看次数: |
17257 次 |
最近记录: |