我想表达以下INSERT
语句:
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
(外键)。这种操作是否可行?
DSL.field(... select ...)
,并将此select field
作为普通字段插入。这样,我只需要一组字段,使代码更加简洁易懂。 - user4597030INSERT .. VALUES
(或jOOQ的等效INSERT .. SET
)语法来完成 - 尽管复合主键也很有用,出于性能原因(请参见:http://www.databasesoup.com/2015/01/tag-all-things.html)。 - Lukas Eder