我只从“转储”表中插入实时表中不存在的新记录。我的问题是有一个我不想插入实时的标识列,我希望实时表标识列负责增加值,但我得到一个插入错误“插入错误:列名或数字提供的值与表定义不匹配。“有没有办法解决这个问题,或者是唯一一个一起删除标识列的修复方法?
谢谢, 萨姆
答案 0 :(得分:1)
您需要列出查询中所有需要的列,不包括标识列。
您不应该使用SELECT *
的另一个原因。
INSERT liveTable
(col1, col2, col3)
SELECT col1, col2, col3
FROM dumpTable dt
WHERE NOT EXISTS
(
SELECT 1
FROM liveTable lt
WHERE lt.Id == dt.Id
)
专业提示:您还可以通过在转储和活动表之间使用OUTER JOIN
并使用WHERE liveTable.col1 = NULL
来实现上述目的(您可能需要限定使用转储表别名选择的列名) 。
答案 1 :(得分:1)
我发现了问题....我的实时表没有将ID字段设置为标识,不知何故,当我创建它时,该字段未正确设置。
答案 2 :(得分:0)
您可以将此列留在插入语句中,如此
insert into destination (col2, col3, col4)
select col2, col3 col4 from source
不要只做
insert into destination
select * from source