jOOQ - CTE 和 INSERT

jOOQ - CTE and INSERT

在 PostgreSQL 中,可以将 INSERT 查询放入 WITH 子句中:

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

jOOQ 支持吗?好像只支持WITH + SELECT

更新

classWithAsStep只支持一个select,但是classWithStep好像支持所有查询。 context.with(CommonTableExpression<?>...)(其中 returns 一个 WithStep)是如何构建的?我在文档中找不到任何有用的东西。

目前,这对于 jOOQ 3.6 是不可能的,因为 INSERT .. RETURNING 返回的类型不是 Select<?> 的子类型,这需要将其放入 jOOQ 的 WithAsStep.as() method. There is a feature request #4474 中以增强 WithAsStep.as() 以接受 ResultQuery,但是 INSERT .. RETURNING 语句首先也需要实现它。

恐怕没有简单的解决方法。此外,在 jOOQ 3.6 中,还不支持使用 DML (DELETEUPDATEINSERT) 的 CTE。相关的功能请求是 #3174