【发布时间】:2013-05-22 19:51:27
【问题描述】:
我有表 A 和 B,它们都有相同的主键 (Col1)。
我想根据表 A 中相应行的信息更新表 B 中的行。如果我要在两个表上获得一个带有内连接的结果集,
select A.Col1, A.Col2, A.Col3, B.Col4 from A inner join B on A.Col1=B.Col1;
我可以遍历这个结果集并更新表 B 中的 Col4 吗?也就是说,使用 JDBC/ResultSet updateX(...) 方法?
我问的原因是,从结果集 A 连接 B 更新表 B 似乎有点奇怪。
澄清:不确定这是否重要,但我有兴趣通过 JDBC ResultSet 接口更新行,而不是直接的 MySQL 更新查询。感谢您的回复!
【问题讨论】:
-
您可以通过 JOIN 进行更新——但是您希望将值更新为什么?
-
JDBC 的某些功能并非总是由数据库供应商实现。
-
@sgeddes:Col3 中有一个字符串需要与 Regex 匹配,根据匹配情况更新 Col4。
-
@Paul Vargas:供应商是 MySQL
-
需要同样的问题。 DBServer:MariaDB 5.5.38,JDBC:mysql-connector-java-5.1.31-bin.jar。两张表都有主键,结果集取自CallableStatement,过程从两张表中选择数据。并且错误:结果集不可更新(引用的表没有主键)。此结果集必须来自使用 ResultSet.CONCUR_UPDATABLE 结果集类型创建的语句,查询必须只选择一个表,不能使用函数并且必须从该表中选择所有主键。有关详细信息,请参阅 JDBC 2.1 API 规范,第 5.6 节。