Я хотел бы выразить следующее INSERT
заявление:jOOQ - многопрофильное для вставки
context.insertInto(TABLE A)
.set(<FIELD A, FIELD B>, context.select(FIELD A, FIELD B).from(B).where(...))
.set(... other field of table A ...)
.set(... other field of table A ...)
.set(... other field of table A ...)
.returning()
.fetch()
Суб-выбора возвращает одну строку с двумя колонками (FIELD A
и FIELD B
), которые должны быть вставлены в мишень TABLE A
. Причиной этого является то, что <FIELD A, FIELD B>
является основным ключом TABLE B
. TABLE A
ссылается на TABLE B
(внешний ключ).
Возможно ли это?
Интересно, в какой базе данных это возможно? –
Хороший вопрос :). Это происходит, если вы используете только jOOQ и ожидаете, что jOOQ сможет перевести все. Это невозможно в простом SQL. –
Это дает мне повод для окончательного реорганизации этих составных первичных ключей в отдельные первичные ключи. Я могу использовать 'DSL.field (... select ...)' впоследствии и просто вставить это 'select field' как простое поле, если я не ошибаюсь. Таким образом, у меня есть только набор полей, что делает код намного проще. –