【问题标题】:INSERT existing values into new column将现有值插入新列
【发布时间】:2017-08-10 03:02:35
【问题描述】:

我已在已填充所有空值的现有表上创建了一个新列 (column4)。我正在尝试使用链接服务器列中的现有值填充所有记录。插入的值必须与正确的行匹配。

这与我似乎已经接近了,但是我现在收到以下错误。我什至没有尝试更新该专栏。我只是引用它,因此新值知道将插入的值放在哪里。

INSERT INTO Server1.database.schema.table1 (Column4)
SELECT link.column6
FROM LinkedServer.database.schema.view as link
INNER JOIN Server1.database.schema.table1 as local
ON link.key = local.key
WHERE local.key = link.key

消息 515,第 16 级,状态 2,第 212 行
无法将值 NULL 插入列“键”、表“本地”;列不允许空值。插入失败。 声明已终止。

【问题讨论】:

  • 你已经用几个不同的数据库产品标记了这个。不要这样做。选择您正在使用的产品,否则您只是在浪费人们的时间,因为不同风格的 RDBMS 经常使用不同的语法。从错误消息来看,您没有使用 Oracle,那么为什么将其包含在您的问题范围内?

标签: mysql sql sql-server oracle tsql


【解决方案1】:

对于 sql server,您需要使用 update 而不是 insert

update local
set local.Column4 = link.column6
from LinkedServer.database.schema.view link
  inner join Server1.database.schema.table1 local
    on link.key = local.key

【讨论】:

  • @Rahul 错误消息来自 sql server,所以我就去了。
  • 是的 .. LOL,OP 已标记所有可用的 RDBMS。所以评论是专门针对这个的。我相信你应该在回答澄清时提到这一点
  • @Rahul 更新提到答案是针对 sql server。
  • @Dallas2447 乐于助人!
猜你喜欢
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多