sql - knex increment upsert - 如果记录创建失败则增加
问题描述
我想尝试创建一条新记录,但如果失败,只需更新(增加)该记录中的值
await databaseService.knex('myTable')
.insert({
id: id1,
value: 0
})
.onConflict(['id1'])
.increment({
value: 1
});
不幸的是,您似乎无法在 onConflict 之后链接 .increment。我想知道是否有一种方法可以使用 knex 执行此操作,还是需要使用原始 SQL?
谢谢
解决方案
merge
应该使用更新部分的冲突https://knexjs.org/#Builder-merge
像这样的东西可能会起作用:
await databaseService.knex('myTable')
.insert({
id: id1,
value: 0
})
.onConflict(['id'])
.merge({
value: knex.raw("?? + ?", ["value", 1])
});
推荐阅读
- symfony - DQL 查询原则不等于返回无结果
- php - PHP SQL注入失败
- apache2 - Ubuntu apach2,因为路径的组件上缺少搜索权限
- azure - 带有无服务器 Web 应用程序的 Azure Front Door
- java - 将项目附加到 Firebase Firestore 数组中
- flutter - 如何在边框和容器小部件之间添加间距
- html - -webkit-writing-mode:vertical-rl 在 iOS 上不起作用
- python - 倒计时函数只返回一个值
- java - Junit 模拟测试响应空白正文
- javascript - 如何在渲染器进程中设置调试(Electron js)