相关疑难解决方法(0)

我可以使用 MERGE INTO 来模拟 Apache Derby 中的“upsert”吗?

我们正在使用 Derby 并且有很多这样的代码:

try (ResultSet rs = executeQuery(...)) {
    if (rs.next()) {
        updateRowSet(rs, ...);
        rs.updateRow();
    } else {
        executeUpdate(...);
    }
}
Run Code Online (Sandbox Code Playgroud)

过去,我们正在寻找一种方法来在服务器端执行此逻辑,并且发现某些数据库支持“更新插入”(更新或插入)操作。Derby 有一个功能请求,MERGE INTO据说这是执行此操作的 SQL:2003 标准方式,因此我们坐下来观看了票证,时间过去了很多。

德比 10.11 终于加入了MERGE INTO。没有人有时间仔细阅读并更新代码以使用它,但是在阅读他们的文档时,他们的所有示例都显示从一张表合并到另一张表。但是等一下,我们的数据还没有在表中!

我知道我可以它放在一个表中,但是它又是多个查询,这完全违背了使用它的意义。

我确信可以在将其放入表格的情况下完成此操作,但由于文档没有显示单个示例,因此我不确定如何进行。

这是我一直在尝试的:

try (PreparedStatement ps = connection.prepareStatement(
        "MERGE INTO things AS target " +
        // Awkward point 1:
        // It wants a "source" table, but I don't have one.
        // So I thought I would try to use the same table …
Run Code Online (Sandbox Code Playgroud)

java sql jdbc derby upsert

5
推荐指数
2
解决办法
2158
查看次数

标签 统计

derby ×1

java ×1

jdbc ×1

sql ×1

upsert ×1