PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

jOOQ insère dans .. là où il n'existe pas pour Postgres

Si vous souhaitez réutiliser un paramètre nommé dans jOOQ, idéalement, vous créez l'élément AST en dehors de la requête, en tant que tel :

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

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

Vous pouvez ensuite l'utiliser plusieurs fois dans votre requête :

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))
     )
  );