我会收到一条错误消息:“操作必须使用可更新的查询"尝试运行SQL时。从我的理解来看,这发生在MS访问中的更新/删除查询中时,就会发生这种情况。但是,我有点困惑,因为我的数据库中还有另一个几乎相同的查询,这可以正常工作。

这是我麻烦的查询:

UPDATE [GS] INNER JOIN [Views] ON 
    ([Views].Hostname = [GS].Hostname) 
    AND ([GS].APPID = [Views].APPID) 
    SET 
        [GS].APPID = [Views].APPID, 
        [GS].[Name] = [Views].[Name], 
        [GS].Hostname = [Views].Hostname, 
        [GS].[Date] = [Views].[Date], 
        [GS].[Unit] = [Views].[Unit], 
        [GS].[Owner] = [Views].[Owner];

正如我之前说的,我感到困惑,因为我还有一个与此相似的查询,该查询运行完美。这就是查询:

UPDATE [Views] INNER JOIN [GS] ON 
[Views].APPID = [GS].APPID 
SET 
    [GS].APPID = [Views].APPID, 
    [GS].[Name] = [Views].[Name], 
    [GS].[Criticial?] = [Views].[Criticial?], 
    [GS].[Unit] = [Views].[Unit], 
    [GS].[Owner] = [Views].[Owner];

我的第一个查询怎么了?为什么第二个查询在第一个问题不行时起作用?

答案

我不知道这个答案是否普遍真实,但是我通过稍微更改查询来解决此问题。

我更改了选择查询以创建临时表。然后,我将那张临时桌子放到真实的桌子上,所有这些都可以很好地工作。

来自: stackoverflow.com