使查询可更新

时间:2015-11-17 20:16:45

标签: sql ms-access

以下是我在MS Access 2007中的不可更新查询:

SELECT [OnlineDirectory].BC_SPEC2 
FROM [OnlineDirectory] INNER JOIN Certifs_ABMS 
    ON [OnlineDirectory].ThisID = Certifs_ABMS.ThisID;

OnlineDirectoryCertifs_ABMS

  • 是具有主键索引的本地表。
  • 在字段ThisID上有索引(“重复好”)。

查询

  • 的记录集类型为dynaset
  • 没有记录锁。

这些都是可更新的:

SELECT * FROM [OnlineDirectory] 

SELECT * FROM [Certifs_ABMS] 

我查看了Allen Browne的famous list of hazards,但没有一个适用。 更新:不正确。见接受的答案。

我很高兴按建议here添加DISTINCTROW,但没有成功。

如何使此查询可更新?

1 个答案:

答案 0 :(得分:1)

  

两者 OnlineDirectory和Certifs_ABMS在字段ThisID上都有索引(“重复好”)。

这就是问题所在。 INNER JOIN的至少一侧需要唯一索引(通常是主键),或者关系不明确。

(Allen Browne: - JOIN中的字段未正确编入索引:JOINed字段中没有主键或唯一索引。

E.g。如果两个表中都有两个记录,每个记录都带有ThisID = 77。如何匹配记录?

如果这是n:m关系,则需要它们之间的联结表。