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();
我有 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();