【问题标题】:Access Update on Query Table查询表的访问更新
【发布时间】:2019-01-07 19:58:05
【问题描述】:

我目前正在将 access 数据库转换为 SQL。在浏览它时,我发现了这个。

Update EmployeeCustomerOrderDetail set Valid = -1;

这很奇怪,因为 EmployeeCustomerOrderDetail 是一个查询,定义如下。

Select * 
From Employee 
   inner join Order on Employee.EmployeeID = Order.EmployeeID 
   inner join Customer on Order.CustomerID = Customer.CustomerID 
   inner join OrderDetail on Order.OrderID = OrderDetail.OrderID

我认为这没有任何效果,因为 Select 上的更新不起作用,但我用它进行了测试

Update (Select * From Employees) as Emp set Emp.WorkPhone as 'Random Value'

它奏效了。

那么我的问题是,这是如何处理的。更新是否向后遍历所有查询表,直到找到数据表?它会改变引用列的值,还是关联表中的实际数据?

【问题讨论】:

    标签: sql ms-access vba sql-update subquery


    【解决方案1】:

    这仅适用于可更新的记录集。这与直接在 Access 查询中更改值相同。

    在可更新的记录集中,数据集中的每个字段(查询)都直接绑定到表中的一个字段。这意味着更新直接影响查询的基础表。您可以查看this answer,了解有关哪些记录集可更新和不可更新的规则。

    关于此的另一个非常违反直觉的事情是具有外部连接的记录集可以包含可更新的不匹配记录。在这种情况下,会在不包含匹配记录的表中创建一条记录,然后创建一条新记录。

    【讨论】:

    • 谢谢。鉴于我没有实际的术语,这真的很难研究。很好的答案
    猜你喜欢
    • 1970-01-01
    • 2011-05-04
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    相关资源
    最近更新 更多