当后端升级到MySQL时,join中带有varchar字段的可编辑MS Access查询不再可编辑

当后端升级到MySQL时,join中带有varchar字段的可编辑MS Access查询不再可编辑,mysql,ms-access,odbc,inner-join,varchar,Mysql,Ms Access,Odbc,Inner Join,Varchar,我将后端MS Access 2003升级到数据库的MySQL 5.1。现在,我正在使用ODBC将后端MYSQL 5.1数据库thr'ODBC(MYSQL ODBC 5.1驱动程序)链接到MS Access 当我设置索引、主键关系/约束等时,几乎所有功能都运行良好 但下面的一个查询在后端升级之前在MS Access版本中是可编辑的,不再允许编辑 联接类型为左/内/右联接,联接中的字段为varchar数据类型 SELECT tblebayinvoices.[User Id], tblebayinvo

我将后端MS Access 2003升级到数据库的MySQL 5.1。现在,我正在使用ODBC将后端MYSQL 5.1数据库thr'ODBC(MYSQL ODBC 5.1驱动程序)链接到MS Access

当我设置索引、主键关系/约束等时,几乎所有功能都运行良好

但下面的一个查询在后端升级之前在MS Access版本中是可编辑的,不再允许编辑

联接类型为左/内/右联接,联接中的字段为varchar数据类型

SELECT tblebayinvoices.[User Id], tblebayinvoices.[Buyer Full name], tblebayinvoices.  
[Buyer Phone Number],  tblstock.stcEBayDescr, tblstock.stcEBayActive
FROM tblebayinvoices LEFT JOIN tblstock ON tblebayinvoices.[Item Title] = 
tblstock.stcEBayDescr;
我的观察是其他查询,其中字段数据类型是numberic,它们很好,并且查询仍然是可编辑的。当后端为MS Access时,该查询是可编辑的 我尝试使用MySQL的文本数据类型,但MS Access将其视为备忘录,不允许在联接中使用


请让我知道我需要做的建议或更改。

您加入的字段似乎不是主键。我假设这是因为这些字段是文本,并且似乎不是典型的主键字段

仅当从上的主键完成联接时,联接才可编辑 将主表转换为子表中的外键。

在“stcEBayDescr”上创建唯一键解决了此问题。我们错过了MS Access中的唯一键索引,但它不是在MySQL表的数据库中创建的。
现在可以在MS Access中编辑查询(使用MySQL链接表thr'MySQL ODBC)

是为这两个查询定义的主键tables@Linger,是的,两个表都有各自的主表。和MS Access中的其他索引字段一样。1)我正在连接的文本字段不是主键,但每个表都有一个其他数字字段作为主键。2) 同样的查询在MS Access中工作,主键没有任何更改,我不明白为什么会这样?只是数据在MS Access中,在上述情况下,表在MySQL中链接到MS Access thr的ODBC。不同的数据库处理这种情况的方式不同。这就是为什么数据库设计应该始终通过主键和外键链接表。如果只有通过
[项目标题]
stcEBayDescr
才能将
tblebayinvoices
链接到
tblstock
,则可能无法通过查询直接更新数据。但是,您可以创建一个临时表将查询转储到其中,然后进行更改。完成后,单独打开表并根据表进行编辑。创建临时表并更新回相应的表看起来是个不错的选择。由于应用程序是在多用户场景中使用的,我担心这可以实现得多好。现在我正在检查MySQL是否提供了存储过程或函数之类的功能,我可以使用该查询的SQL来编辑数据。除此之外,我还需要研究这种存储过程/函数是否可以通过ODBC链接到前端MS Access应用程序。只要不使用庞大的数据集,就可以很快将结果放入表中。记录的更新可以按字段而不是按记录处理。如果以这种方式处理,两个用户写入同一条记录的冲突将仅为几分之一秒。那么冲突的可能性将非常小。此查询是可编辑的,用于MySQL的dbForge studio express。问题一定出在ODBC驱动程序中。由于MySQL的原因,ODBC连接查询提供了不可编辑的记录集,该记录集具有联接,但没有主键。我正在搜索MySQL ODBC的替代方案,以将表链接到MS Access。