JOOQ:用one2one关系更新两个表

JOOQ: update two tables with one2one relation

我有 2 个具有 1:(0 或 1) 关系的表 例如:

表 1 - 学生

id last_name first_name
1 Hart John

表 2 - student_address

id student_id address is_married
1 1 something true

不是每个学生都有地址(例如)

我想更新两个表,更新学生,如果 student_address 中存在相关行 - 也更新 student_address。 是否可以在 JOOQ 的一个查询中完成?

在 MySQL 中,您可以使用 JOIN:

在单个语句中更新多个表
create table a (i int primary key, j int);
create table b (i int references a, k int);

insert into a values (1, 1);
insert into b values (1, 1);
update a join b using (i) set j = 2, k = 2;
select * from a join b using (i);

导致

|i  |j  |k  |
|---|---|---|
|1  |2  |2  |

从 jOOQ 的角度来看,这没有什么特别之处。直接翻译成jOOQ就可以了:

ctx.update(A.join(B).using(A.I))
   .set(A.J, 2)
   .set(B.K, 2)
   .execute();