以下是我在MS Access 2007中的不可更新查询:
SELECT [OnlineDirectory].BC_SPEC2
FROM [OnlineDirectory] INNER JOIN Certifs_ABMS
ON [OnlineDirectory].ThisID = Certifs_ABMS.ThisID;
OnlineDirectory
和Certifs_ABMS
:
ThisID
上有索引(“重复好”)。查询
dynaset
。这些都是可更新的:
SELECT * FROM [OnlineDirectory]
SELECT * FROM [Certifs_ABMS]
我查看了Allen Browne的famous list of hazards,但没有一个适用。 更新:不正确。见接受的答案。
我很高兴按建议here添加DISTINCTROW
,但没有成功。
如何使此查询可更新?
答案 0 :(得分:1)
两者 OnlineDirectory和Certifs_ABMS在字段ThisID上都有索引(“重复好”)。
这就是问题所在。 INNER JOIN的至少一侧需要唯一索引(通常是主键),或者关系不明确。
(Allen Browne: - JOIN中的字段未正确编入索引:JOINed字段中没有主键或唯一索引。)
E.g。如果两个表中都有两个记录,每个记录都带有ThisID = 77
。如何匹配记录?
如果这是n:m关系,则需要它们之间的联结表。