2015-08-22 1 views
2

В PostgreSQL, можно иметь INSERT запрос в п WITH:jOOQ - КТР и ВСТАВИТЬ

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

DoES jOOQ поддерживает это? Кажется, поддерживается только WITH + SELECT?

обновление

Класс WithAsStep поддерживает только выбрать, но класс WithStep, кажется, поддерживает все запросы. Как работает context.with(CommonTableExpression<?>...) (который возвращает WithStep) строительные работы? Я не могу найти ничего полезного в документации.

+0

FYI, 'WITH' +' DELETE' и 'UPDATE' также поддерживается PostgreSQL. –

ответ

1

В настоящее время это не представляется возможным с jOOQ 3,6, так как тип, возвращаемый INSERT .. RETURNING не подтипом Select<?>, которая требуется, чтобы поместить его в WithAsStep.as() методе jOOQ в. Существует запрос функции #4474, чтобы усилить WithAsStep.as(), чтобы принять ResultQuery, но все же оператору INSERT .. RETURNING необходимо было также реализовать это.

Боюсь, для этого нет легкого обходного пути. Кроме того, в jOOQ 3.6 CTE с DML (DELETE, UPDATE, INSERT) еще не поддерживается. Соответствующий запрос функции #3174

+0

Благодарим вас за отзыв! Вы можете рассматривать это как ответ на свой https://twitter.com/JavaOOQ/status/634688927752953856 вопрос;). Еще раз спасибо. –

+0

@KevinDeGrote: Хорошая точка, хотя я не могу обещать, что это можно сделать в 3.x, не нарушая обратной совместимости ... Было бы позором, хотя, действительно хорошая функция PostgreSQL! –

+1

Нет проблем, если это невозможно! Я уже более чем доволен нынешними возможностями. Хотелось бы, чтобы я убедил своих коллег в том, что они вырвали свои модные ORM :). –

 Смежные вопросы

  • Нет связанных вопросов^_^