2015-08-22 197 views
2

在PostgreSQL,就可以有一個INSERT查詢到WITH條款:jOOQ - CTE和INSERT

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

是否jOOQ支持呢?看來只支持WITH + SELECT

更新

WithAsStep僅支持一個選擇,但是類WithStep似乎支持所有查詢。 context.with(CommonTableExpression<?>...)(它返回一個WithStep)結構如何工作?我在文檔中找不到任何有用的東西。

+0

僅供參考,'WITH' +'DELETE'和'UPDATE'也被PostgreSQL支持。 –

回答

1

目前,這對於jOOQ 3.6是不可能的,因爲由INSERT .. RETURNING返回的類型不是Select<?>的子類型,其將需要將其放入jOOQ的WithAsStep.as()方法中。有一個功能請求#4474以增強WithAsStep.as()接受ResultQuery,但仍然需要首先執行INSERT .. RETURNING聲明。

恐怕沒有簡單的解決方法。另外,在第3.6版中,還沒有支持具有DML的CTE(DELETE,UPDATEINSERT)。相關的功能請求是#3174

+0

謝謝您的反饋!您可以將其視爲對https://twitter.com/JavaOOQ/status/634688927752953856問題的回答;)。再次感謝。 –

+0

@KevinDeGrote:好點,雖然我不能保證這可以在3.x中完成,但不會破壞向後兼容性......儘管如此,PostgreSQL的功能真是太好了! –

+1

沒有問題,如果這是不可能的!我對目前的可能性已經非常滿意。我希望我能說服我的同事們放棄他們看中的ORM :)。 –