PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

jOOQ inserire in .. dove non esiste per Postgres

Se desideri riutilizzare un parametro denominato in jOOQ, idealmente, crei l'elemento AST al di fuori della query, in quanto tale:

// Assuming a static import
import static org.jooq.impl.DSL.*;

Param<Integer> myId = param("myId", Integer.class);

Puoi quindi utilizzarlo più volte nella tua query:

using(configuration)
  .insertInto(MY_TABLE, MY_TABLE.MY_ID, MY_TABLE.COL1, MY_TABLE.COL2)
  .select(
     select(
        myId, 
        param("firstCol", MY_TABLE.COL1.getType()),
        param("secondCol", MY_TABLE.COL2.getType())
     )
     .whereNotExists(
        selectOne()
        .from(MY_TABLE)
        .where(MY_TABLE.MY_ID.eq(myId))
     )
  );