未正确更新链接的 Oracle 表的访问更新查询
Posted
技术标签:
【中文标题】未正确更新链接的 Oracle 表的访问更新查询【英文标题】:Access update query of linked Oracle tables not updating properly 【发布时间】:2018-03-27 14:31:00 【问题描述】:我有一个链接到 Access 数据库的 Oracle 表,其中有两列我正在尝试更新:
甲骨文:EAUSER_WELL_SUMMARY - UWI (PK) - MN_FORM - MN_SRC
我正在使用数据库中的 Access 表来更新链接的 Oracle 表中的两列:
访问:TMP_FORM_SRC - UWI (PK) - MAIN_FORM - MAIN_SRC
这是正在使用的 SQL:
UPDATE eauser_well_summary
INNER JOIN [tmp_form_src]
ON eauser_well_summary.WELL_UWI =
[tmp_form_src].WELL_UWI
SET eauser_well_summary.MAIN_HZ_FM =
[tmp_form_src] ! [MAIN_FORM],
eauser_well_summary.MAIN_HZ_SOURCE =
[tmp_form_src] ! [MAIN_FORM_SRC];
当我运行这个包含大约 3,300 条记录的更新查询时,MN_FORM 列保持未更新,但 MN_SRC 列最终会出现合并的混乱来源。例如,源是 GS、GGX、TEAMDB、TRANSFORM_OVERRIDE 和 TRANSFORM。列中的内容是 GGXBORM_OVERRIDE、GGXBORM_OVERRIDE、TRANSFORMNSFORMIDE 等。
现在,如果我只对一口井运行更新查询,它会正确更新两列。只有当我尝试做不止一件事时才会出现问题。
我尝试只更新 MN_FORM,但收到以下错误消息:
“由于类型转换,Microsoft Access 未更新 0 个字段 失败,0 条记录由于密钥违规,3361 条记录由于 锁违规,以及由于验证规则违规导致的 0 条记录。做 还是要继续运行这种类型的操作查询?”
当我点击是时,一条记录确实更新了。
我无法确定锁冲突,因为我可以单独更新记录,而且,这是一个测试 Oracle 数据库,只有我在其中,所以没有其他人在其中工作。 Access数据库也是如此。
我在整个网络上进行了搜索,但找不到任何可以帮助我解决此问题的内容。任何帮助或指导都会很有用。
谢谢!
更新:根据 SunKing0 提供的文章以及我从 Erik von Asmuth 那里找到的一些额外指导(谢谢两位),我几乎发现问题出在 Oracle 方面。如果我创建链接 Oracle 表的 Access 表并运行更新查询,它运行时不会违反锁。 Erik 建议使用 DLOOKUP 来解决锁冲突,但没有奏效。
有人对通过 Access 更新 Oracle 表时如何解决锁冲突有任何建议吗?有趣的是,它只发生在批处理模式下——如果我使用更新查询只更新一条记录,它会更新而没有错误或问题。
【问题讨论】:
MS Access UPDATE 与 INNER JOIN:***.com/questions/12882212/… 【参考方案1】:好吧,在尝试了所有方法之后,我的一位同事在网上找到了一份关于 Oracle ODBC 驱动程序中已知错误的文档。推荐使用微软提供的Oracle驱动。
我通过转到 C:\Windows\SysWOW64\odbcad32.exe 运行 ODBC 管理器,然后选择 Microsoft Oracle ODBC 来创建我的连接。然后,我使用新连接重新链接了我的 Oracle 表,并且能够使用以下代码毫无问题地更新表:
UPDATE EAUSER_NFX_HZ_WELL_SUMMARY
INNER JOIN TMP_FORM
ON EAUSER_NFX_HZ_WELL_SUMMARY.WELL_UWI = TMP_FORM.WELL_UWI
SET EAUSER_NFX_HZ_WELL_SUMMARY.MAIN_HZ_FM = [TMP_FORM]![MAIN_FORM],
EAUSER_NFX_HZ_WELL_SUMMARY.MAIN_HZ_SOURCE = [TMP_FORM]![MAIN_FORM_SRC];
这里是讨论该错误的文章的链接:
Error updating linked table
【讨论】:
以上是关于未正确更新链接的 Oracle 表的访问更新查询的主要内容,如果未能解决你的问题,请参考以下文章
oracle触发器自身表更新时,怎么拿到别的表字段数据更新自身表的某个字段?
在更新 cx_oracle 中的表时出现 DatabaseError: ORA-00933: SQL 命令未正确结束
sql server 链接到 oracle 的服务器在数据存在时返回未找到数据