JOOQ - 表达式更新语句

4
在PostgreSQL中,您可以使用一个表达式来利用给定行的列值来定义集合语句中的值。例如:
UPDATE some_table
SET col_a = (col_b != 1)
WHERE col_c = 'some val'

有没有在JOOQ中实现这个的方法?- 我查看了JOOQ文档,但是我没有找到任何相关的参考。
2个回答

3

我假设col_a是一个Field<Boolean>类型的字段。如果是这种情况,你可以使用DSL.field(Condition)方法将一个Condition包装在一个Field<Boolean>表达式中。

// As always, assuming you have this static import:
import static org.jooq.impl.DSL.*;

ctx.update(SOME_TABLE)
   .set(SOME_TABLE.COL_A, field(SOME_TABLE.COL_B.ne(1)))
   .where(SOME_TABLE.COL_C.eq("some val"))
   .execute();

0

我确实注意到了这个问题,但是我无法让它正常工作。问题在于第二行不应该使用否定,而应该等于某个参数(比如where子句)。但是eq返回的是一个条件而不是字段,而row()需要的是字段。你有什么想法吗? - JayDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接