在Jooq中,我可以使用
DSL#name(...)
方法来编写CTE,包括具有RETURNING
子句的INSERT / UPDATE / DELETE查询
例如
name("my_cte").as(
update(MY_TABLE)
// ...
.returning(MY_TABLE.ID)
)
但是如果我删除
.returning(...)
部分,我会在编译时遇到类型不匹配的问题
有办法解决吗?
这在 jOOQ 中是不可能的。您必须提供
RETURNING
子句才能使 DML 语句在 CTE 中可用。您可以尝试为此创建功能请求,但我认为这不会被优先考虑。与更简洁的方法相比,这种方法的实用性似乎可以忽略不计,在该方法中,您可以使用存储过程来完成同样的事情,无论是用本机 PL/pgSQL 编写还是使用 jOOQ 的过程语言支持。