在许多其他帖子中已经以各种形式回答了插入不存在的记录的问题。但是,这个特殊情况还没有得到解决(至少我不能说到......而且我看起来很难。)我不是新来的Access或者SQL,所以我觉得我已经尝试了所有明显的东西......但我可能会遗漏一些东西。
我正在尝试将源表中的新记录插入到目标表中。源表的结构是目标表的精确副本;但源表可能有其他记录不在目标表中。这两张桌子都有一个自动编号' id'柱。这是两个表格的结构:
'id' autonumber, pk
'equip_number' (text)
'permit_type_id' (text)
INSERT INTO permit (equip_number, permit_type_id)
SELECT f.equip_number, f.permit_type_id
FROM temp_permit AS f
WHERE Not Exists (
SELECT 1 FROM permit AS o
WHERE o.equip_number = f.equip_number AND o.permit_type_id = f.permit_type_id)
equip_number和permit_type_id都不是唯一的,但equip_number和permit_type_id的组合总是唯一的,即每个设备可能有许多许可类型。
当我运行查询时,出现错误," ...由于密钥违规而没有将(2)记录添加到表中。"源文件中只有两个新记录,因此这告诉我所有插入都失败了。我测试了子查询,它确切地返回了两个新记录,因此看起来工作正常。我已确认目标表中不存在这两个记录。
这是目标'许可证'的屏幕截图。在设计视图中的表。两个表都是相同的,即源表是该表的精确副本。
答案 0 :(得分:1)
显然,这里的问题是目标表的链接表定义包含有关该表上索引的过时(或可能已损坏)信息。删除和重新创建表链接解决了这个问题。