jOOQ - CTE和INSERT

时间:2015-08-22 17:36:13

标签: sql postgresql common-table-expression jooq

在PostgreSQL中,可以对INSERT子句进行WITH查询:

with a as (
    insert into table(...) values(...) returning *
)
select a.*
from a

jOOQ是否支持此功能?似乎只支持WITH + SELECT

更新

WithAsStep仅支持select,但类WithStep似乎支持所有查询。 context.with(CommonTableExpression<?>...)(返回WithStep)构造如何工作?我在文档中找不到任何有用的东西。

1 个答案:

答案 0 :(得分:1)

目前,jOOQ 3.6无法实现这一点,因为INSERT .. RETURNING返回的类型不是Select<?>的子类型,需要将其置于jOOQ的WithAsStep.as()方法中。功能请求#4474可以增强WithAsStep.as()接受ResultQuery,但INSERT .. RETURNING语句首先需要实现此功能。

我担心,这没有简单的解决方法。此外,在jOOQ 3.6中,尚不支持带有DML(DELETEUPDATEINSERT)的CTE。相关功能请求为#3174