0

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

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

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

谢谢

4

1 回答 1

0

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/krdgetjij9​​xh

于 2021-09-27T13:13:45.497 回答