【问题标题】:knex increment upsert - increment if record creation failsknex increment upsert - 如果记录创建失败则增加
【发布时间】:2021-11-03 07:28:13
【问题描述】:

我想尝试创建一条新记录,但如果失败,只需更新(增加)该记录中的值

  await databaseService.knex('myTable')
  .insert({
    id: id1,
    value: 0
  })
  .onConflict(['id1'])
  .increment({
    value: 1
  });

不幸的是,您似乎无法在 onConflict 之后链接 .increment。我想知道是否有一种方法可以使用 knex 执行此操作,还是需要使用原始 SQL?

谢谢

【问题讨论】:

    标签: sql knex.js upsert knexjs


    【解决方案1】:

    与更新部分冲突merge 应使用https://knexjs.org/#Builder-merge

    这样的事情可能会奏效:

      await databaseService.knex('myTable')
      .insert({
        id: id1,
        value: 0
      })
      .onConflict(['id'])
      .merge({
        value: knex.raw("?? + ?", ["value", 1])
      });
    

    https://runkit.com/embed/krdgetjij9xh

    【讨论】:

      猜你喜欢
      • 2016-10-29
      • 2018-03-26
      • 2023-02-07
      • 1970-01-01
      • 2020-02-28
      • 2020-05-12
      • 2014-10-08
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多