在JOEQ for PostgreSQL中选择一组预定义值

时间:2015-04-03 14:34:45

标签: java sql postgresql select jooq

有人知道是否可以使用一组预定义的值在JOOQ中写入?如果不存在,我需要插入。 例如,

INSERT INTO test
    (text)
    SELECT '1234567890123456789'
    WHERE
        NOT EXISTS (
            SELECT id FROM test WHERE text = '1234567890123456789'
        );

1 个答案:

答案 0 :(得分:0)

我自己找到了答案:

List<Param<?>> params = new LinkedList<>();
params.add(DSL.val("1234567890123456789"));

List<Field<?>> fields = new LinkedList<>();
fields.add(TEST.TEXT);

SelectConditionStep<Record1<TEXT>> notExistsSelect = context.select(TEST.TEXT).from(TEST).where(TEST.TEXT.eq("1234567890123456789"));
SelectConditionStep<Record> insertIntoSelect = context.select(params).whereNotExists(notExistsSelect);

context.insertInto(TEST, fields).select(insertIntoSelect).execute();

但如果我们有能力通过 InsertQuery 来实现它,那就太棒了。我还没有找到办法。