首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在onDuplicateKeyUpdate中使用jOOQ的批处理加载器时,如何只更新某些字段?

在onDuplicateKeyUpdate中使用jOOQ的批处理加载器时,如何只更新某些字段?
EN

Stack Overflow用户
提问于 2021-04-21 02:30:14
回答 1查看 130关注 0票数 1

是否可以使用jOOQ的batchAll()加载器在发现重复项时仅更新某些字段?与onDublicateKeyUpdate()用于单个记录的方式类似:https://www.jooq.org/doc/latest/manual/sql-building/sql-statements/insert-statement/insert-on-duplicate-key/

我想要更改的代码是,当有重复的字段时只更新一个字段:

代码语言:javascript
复制
dsl.loadInto(TABLE)
        .batchAll()
        .onDuplicateKeyUpdate()
        .loadRecords(records)
        .fields(TABLE.fields())
        .execute();
EN

回答 1

Stack Overflow用户

发布于 2021-04-22 16:06:01

不,这在Loader API中是不可能的,但您可以通过编程方式使用batch API或甚至使用batched connection对单个语句进行普通批处理,后者收集所有JDBC语句并延迟执行,直到可以执行批处理:

代码语言:javascript
复制
dsl.batched(c -> {
    for (Record record : records) {
        c.dsl().insertInto(TABLE)
               .set(record)
               .onDuplicateKeyUpdate()
               .set(TABLE.FIELD_OF_INTEREST, record.get(TABLE.FIELD_OF_INTEREST))
               .execute(); // Actual execution is delayed until the end of the lambda
    }
}); // Now, all collected statements are batched together
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67184438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档