当前位置: 首页 > 面试题库 >

更改表,然后在单个语句中更新

施轶
2023-03-14
问题内容

我有一个需要更改的地方(添加2列),然后更新同一张表。

这是我尝试过的查询:

ALTER TABLE A
ADD c1 int,c2 varchar(10)

UPDATE  A set c1 = 23, c2 = 'ZZXX'

我需要一次运行上述两个查询。

我正在使用Talend ETL工具,在这里我们有一个组件tMssqlrow,它允许我们运行多个查询(我在单个组件中使用10到15个更新查询)。

但是上面的查询不起作用。

我在数据库Microsoft SQL中进行了测试。我收到以下错误:

消息207,第16级,州1,第5行

无效的列名“ c1”。讯息207,

16级,州1,第5行

无效的列名“ 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;

但这与原始查询不完全相同,因为默认约束将被遗弃并且可能需要删除。



 类似资料:
  • 问题内容: 我处于必须更新数据库中约12,000个项目的情况。每行都需要镜像我之前制作的一个excel文件。我已经创建了创建SQL语句每一行的文件,但是不确定是否可以在单个查询中运行每一行。 这是我正在尝试做的一个例子。 这项工作有效吗,或者我要实现的目标还有更好的选择吗? 每个项目将具有唯一值,并且要更改的列也将具有唯一值。我看不到如何通过循环或到目前为止找到的任何其他方法来实现此目的。我意识到

  • 问题内容: 什么是相对进口?在python2中还允许在其他什么地方导入star?请举例说明。 问题答案: 每当导入相对于当前脚本/软件包的软件包时,就会进行相对导入。 例如,考虑以下树: 现在,你derived.py需要从中获得一些东西。在Python 2中,你可以这样做(在中): Python 3不再支持该功能,因为它是否明确要求“相对”还是“绝对” base。换句话说,如果base系统中安装了

  • 问题内容: 抱歉,标题不清楚。基本上,我试图从多个表中选择某些记录,然后为返回的记录更新某个列值。 T-SQL实施 甲骨文 我尝试在Teradata中执行与在Oracle中相同的操作,但是出现以下错误: 我在网上寻找解决方案,但没有运气。 问题答案: 您是否使用Teradata尝试了以下语法:

  • 如果用户选择任何语言的应用程序更改,language.but我的应用程序内容是从json检索数据api.how改变它? 在此处输入图像描述 } } 在此处输入图像描述

  • 问题内容: 我有两张桌子。表A和表B。 TableA包含一个varbinary(max)列-名为[BinaryA] TableB包含一个包含每个varbinary卷的列(名为“ Volume”,类型为“ Long”)。 为了选择我查询的所有卷 比,我想用它的体积更新tableB。 然后我写 我收到比 虽然我在运行时没有收到任何NULL 问题答案: 尝试使用此查询: 假设TableB和[VAULT]

  • 问题内容: 我想知道存储过程中是否可以有多个Update语句 像这样的东西: 现在,我将单独执行它们,但是由于它们只能一起使用,所以我想知道它们是否可以仅位于一个SP中。 问题答案: 是的,有可能: