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 (DELETE
、UPDATE
、INSERT
) 的 CTE。相关的功能请求是 #3174
在 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 (DELETE
、UPDATE
、INSERT
) 的 CTE。相关的功能请求是 #3174