【问题标题】:Operation must use an updatable query操作必须使用可更新的查询
【发布时间】:2019-11-29 04:11:34
【问题描述】:

我正在尝试更新一个表中的列,以将其值设置为另一个表中的记录数。这会产生错误:

操作必须使用可更新的查询。

查询:

UPDATE Tracking SET BatchCount = (Select Count(*) from Batch)
WHERE ReportingDate=Date();

似乎 Access 不喜欢 Select Count(*) from Batch 子查询。如果我用文字值替换它,它就可以正常工作。

非常感谢任何解决此问题的建议。

【问题讨论】:

    标签: sql ms-access ms-access-2016


    【解决方案1】:

    不幸的是,这是 MS Access 使用的 JET 数据库引擎的固有限制:update 查询的任何部分都不能使用聚合,否则生成的记录集不可更新。


    有几种解决方法:

    您可以使用域聚合函数,例如DCount

    update tracking set batchcount = dcount("*", "Batch")
    where reportingdate = date();
    

    或者,您可以使用临时表来存储计数结果,然后使用表中保存的值更新记录,例如

    select count(*) as cnt into temptable from batch
    
    update tracking, temptable set tracking.batchcount = temptable.cnt
    where tracking.reportingdate = date();    
    

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      相关资源
      最近更新 更多