Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jooq-忽略重复项_Java_Sql_Database_Jooq - Fatal编程技术网

Java Jooq-忽略重复项

Java Jooq-忽略重复项,java,sql,database,jooq,Java,Sql,Database,Jooq,我目前正在为一个项目使用Jooq,但我需要一种方法来忽略insert上的重复键 我有一个要写入表的对象数组,但如果它们已经存在,则由开始和事件类型上的复合唯一索引确定,我希望插入以静默方式失败 我的代码如下所示: InsertValuesStep<MyRecord> query = fac.insertInto(MY_REC, MY_REC.START_TS, MY_REC.STOP_TS,

我目前正在为一个项目使用Jooq,但我需要一种方法来忽略insert上的重复键

我有一个要写入表的对象数组,但如果它们已经存在,则由开始和事件类型上的复合唯一索引确定,我希望插入以静默方式失败

我的代码如下所示:

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();
但无论我添加什么,它似乎仍然会在重复项上抛出一个错误

对MySQL语法的支持已经在我们的路线图上了。这是最近在网上讨论过的。此语法将在支持SQL MERGE语句的所有其他SQL方言中模拟


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

我不知道这个工具,但在纯SQL中,您可以执行类似于插入表SELECT col1、col2 FROM VALUESval1、val2 as tempcol1、,col2如果不存在,请从col1=val1的表中选择“1”,该表的优点是可以处理几乎所有RDBMS或一个微小的变化。@LukasEder插入t column1。。。列选择。。。从其他一些表格中。。。几乎所有(如果不是所有的话)DBMS都支持它。@ypercube:我一定错过了选择。。。我的错
.onDuplicateKeyUpdate().set(MY_REC.EVENT_TYPE,MY_REC.EVENT_TYPE);