当前位置: 首页 > 知识库问答 >
问题:

使用jOOQ向Postgres表升级时返回更新行的计数

柯波娃
2023-03-14

我正在使用Jooq的insertinto()onDuplicateKeyUpdate()方法将一些数据添加到Postgres表中。以后我想知道我的数据中有多少重复项,因此如果插入或更新了一行,就需要返回。

根据我到目前为止对postgres的具体研究,我发现返回(不是my_table.xmax=0)作为更新是一个有效的选项。但是,从jOOQ中自动生成的Java表类似乎不能让我访问像Xmax这样的postgres的系统列。

dsl.insertInto(MY_TABLE)
        .columns(
                // pkey columns
                MY_TABLE.SHIFT,
                MY_TABLE.DATE_UTC,
                MY_TABLE.TIME_UTC,

                MY_TABLE.DURATION,
        )
        .values(
                shiftId,
                utcDateId,
                utcTime,
                duration
        )
        .onDuplicateKeyUpdate()
        .set(MY_TABLE.DURATION, newDuration)
        .returning((MY_TABLE.xmax = 0).`às`("inserted"))
        .execute()

我已经重新检查了Maven jOOQ表生成配置,并且不排除任何列。我也在Jooq自己的网站上阅读了所有我能找到的东西,但没有找到这个特定用例的有用信息。

我在这里能做什么有什么建议吗?

共有1个答案

刘昌翰
2023-03-14

在这种情况下,您应该使用Jooq的SQL模板。具体来看dsl.field()方法。类似如下:字段(“my_table.xmax”,int.class).eq(0)

 类似资料:
  • 当更新其中一个表中的字段时,我很难制定一个jooq查询来返回两个表中的数据。(Postgres 9.6,jooq 3.11) 表DEVICE和CUSTOMER在外键约束设备上联接。CUSTOMERID=CUSTOMER.ID。 我想返回一个合格的device.id和设备客户的customer.secret,并更新device.stateIN_PROGRESS。资格由各种条款评估。 我开始用 这导致

  • 但现在我也需要知道: 插入了多少行 由于现有而更新了多少行 由于约束无法插入多少行 如果最后一行没有遵守约束,那么以前插入/更新的行是否会保留在数据库中?

  • 我升级到了mavericks,在安装/编译新的gems时遇到了一些麻烦,所以我重新安装了xcode,并进行了brew更新和升级。Gems现在可以工作了,甚至postgres也继续工作了一段时间,直到最近重新启动。现在波斯特格雷斯似乎有问题。

  • 我有一个带有jsonb列的PostgreSQL表,其中包含一个字符串数组,这些字符串是标记值,如下所示:。我有一个自定义绑定,用于将JSON与jackson JSONode进行转换。 自定义绑定定义如下:https://gist.github.com/helgeg/0C0B14228F75E91B7542BD6979A05B49 用基本的find读取记录,然后我提取JSON列,如下所示: 这是使用

  • Kubernetes到目前为止基本保持三个月发行一个新版本的节奏,更新节奏可以说非常快,这一部分将主要跟踪kubernetes及其相关组件的更新与升级。

  • 问题内容: 我试图在扭曲的python中结合这两个查询: 和: 进入单个查询。有可能这样做吗? 我尝试将SELECT放在子查询中,但我不认为整个查询都会返回我想要的内容。 有没有办法做到这一点?(甚至更好,没有子查询)还是只需要坚持两个查询? 谢谢, 泉 问题答案: 您不能直接合并这些查询。但是您可以编写一个存储过程来执行两个查询。例: