MS Access:从源 table 插入行,而目标 table 中不存在这些行

MS Access: Insert rows from an source table where the rows don't exist in the target table

关于插入不存在的记录的问题,在其他很多帖子中都以各种形式得到了解答。然而,这个特殊情况还没有得到解决(至少据我所知……而且我已经很努力地看了。)我不是 Access 或 SQL 的新手,所以我觉得我'我已经尝试了所有明显的东西......但我可能会遗漏一些东西。

我正在尝试将新记录从源 table 插入目标 table。源 table 的结构是目标 table 的精确副本;但源 table 可能有其他记录不在目标 table 中。两个 table 都有一个自动编号 'id' 列。这是 table 的结构:

'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) 条记录添加到 table...”有源文件中正好有两条新记录,所以这告诉我所有插入都失败了。我已经测试了子查询,它 returns 正好是两条新记录,所以看起来工作正常。我已经确认目标 table 中不存在这两条记录。

这是设计视图中目标 'permit' table 的屏幕截图。两个 table 是相同的,即源 table 是此 table.

的精确副本

显然这里的问题是目标 table 的链接 table 定义包含有关 table 上的索引的过时(或可能已损坏)信息。删除 re-creating table 链接解决了问题。