以下是我在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的著名危险清单,但没有一个适用更新:不正确。请参阅已接受的答案。
我对按照这里的建议添加DISTINCTROW
感到兴奋,但没有成功。
如何使此查询可更新?
OnlineDirectory和Certifs_ABMS在ThisID字段上都有索引("可以复制")。
这就是问题所在。INNER JOIN至少有一侧需要唯一索引(通常是主键),或者关系不明确。
(Allen-Browne:-JOIN中的字段没有正确索引:JOINed字段上没有主键或唯一索引。)
例如,如果两个表中都有两条记录,每条记录都有ThisID = 77
。应该如何匹配记录?
如果这是一个n:m关系,则需要它们之间的连接表。