首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jooq -忽略重复项

问Jooq -忽略重复项
EN

Stack Overflow用户
提问于 2012-04-20 22:26:20
回答 1查看 1.3K关注 0票数 2

我目前正在为一个项目使用Jooq,但我需要一种在插入时忽略重复键的方法。

我有一个要写入表的对象数组,但是如果它们已经存在,由START_TS和EVENT_TYPE上的复合唯一索引确定,我希望插入操作不会发生故障。

我的代码看起来像这样:

代码语言:javascript
复制
InsertValuesStep<MyRecord> query = fac.insertInto(MY_REC,
                MY_REC.START_TS,
                MY_REC.STOP_TS,
                MY_REC.EVENT_DATA,
                MY_REC.EVENT_TYPE,
                MY_REC.PUBLISHED_TS,
                MY_REC.MY_ID
                );

        for(int i=0;i<recs.length;i++)
        {
            MyClass evt = recs[i]; 
            query.values(
                    new java.sql.Date(evt.startTS.getTime()),
                    (evt.stopTS == null) ? null : new java.sql.Date(evt.stopTS.getTime()),
                    evt.eventData,
                    evt.type.name(),
                    date,
                    id)

        }

        query.execute();

这样的解决方案将是理想的:https://stackoverflow.com/a/4920619/416338

我想我需要添加如下内容:

代码语言:javascript
复制
.onDuplicateKeyUpdate().set(MY_REC.EVENT_TYPE,MY_REC.EVENT_TYPE);

但无论我添加什么,它似乎仍然会在重复项上抛出错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-21 06:25:46

在jOOQ 2.3.0的路线图中提供了对MySQL的INSERT IGNORE INTO语法的支持。这是最近在jOOQ user group上讨论过的。此语法将在支持SQL MERGE语句的所有其他SQL方言中模拟。

同时,作为一种解决办法,您可以尝试一次插入一条记录

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10248155

复制
相关文章

相似问题

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