使查询可更新



以下是我在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的著名危险清单,但没有一个适用更新:不正确。请参阅已接受的答案。

我对按照这里的建议添加DISTINCTROW感到兴奋,但没有成功。

如何使此查询可更新?

OnlineDirectory和Certifs_ABMS在ThisID字段上都有索引("可以复制")。

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

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

例如,如果两个表中都有两条记录,每条记录都有ThisID = 77。应该如何匹配记录?

如果这是一个n:m关系,则需要它们之间的连接表。

最新更新