Jooq - 忽略重复
问题描述:
我目前正在使用Jooq作为项目,但我需要一种方法来忽略插入时的重复键。Jooq - 忽略重复
我有一个想要写入表的对象数组,但是如果它们已经存在由START_TS和EVENT_TYPE上的复合唯一索引确定,我希望插入以静默方式失败。
我的代码看起来是这样的:
像这样的解决方案是理想的:https://*.com/a/4920619/416338
我想我需要添加类似:
.onDuplicateKeyUpdate().set(MY_REC.EVENT_TYPE,MY_REC.EVENT_TYPE);
但无论我添加它似乎仍然在重复上抛出一个错误。
答
支持MySQL的INSERT IGNORE INTO
语法在jOOQ 2.3.0的路线图上。最近在jOOQ user group上讨论过这个问题。此语法将在支持SQL MERGE
语句的所有其他SQL方言中进行模拟。
与此同时,作为一种解决方法,你可以尝试一次插入一条记录
我不知道这个工具,但在普通的SQL,你可以这样做'INSERT INTO表(SELECT COL1 ,col2 FROM(VALUES(val1,val2))as temp(col1,col2)WHERE NOT EXISTS(SELECT'1'FROM table where col1 = val1))'这对于几乎每个RDBMS都有效变异)。 – 2012-04-20 15:47:47
@LukasEder INSERT INTO t(column1,... columnN)SELECT ...从其他表中...几乎所有(如果不是全部)DBMS都支持''。 – 2012-04-20 22:29:14
@ypercube:我一定错过了'SELECT' ...我的坏 – 2012-04-20 22:31:35