Golang 和 Postgres 交互 - 从 int64 中减去 1 Table 每个查询
Golang & Postgres Interaction - Subtract 1 From int64 Table Every Query
我正在学习创建 HTTP API,
我正在创建一个虚拟 API 信用系统,因为这是我特别感兴趣的。
这是我想出的:(我正在使用 PQ Driver)
if !dummy.creds <= 0 {
c.JSON(404, gin.H{
"success": false,
"message": "No Credits!",
})
return
}
但是,假设我将 SQL table 编辑为 50 个积分,如何在每次查询虚拟 API 时减去 1 个积分?
例如,如果我查询 API 并且它 returns 来自 SQL table 的成功虚拟数据(在 JSON 中),我怎样才能减去一个学分,这样我只有 49 个学分,然后是 48、47、46 等等
更新:这是我想出的
_, err := db.Exec("UPDATE dummy SET creds = -1 WHERE email = ")
if err != nil {
log.Fatal(err)
}
它没有工作,没有做任何事情。
我做错了什么?
对此的任何答案和知识都将是惊人的!
谢谢!
@seva 发表
I believe the question is about returning consistent results. It's not about go then. It's about database. Search "optimistic locking" vs "pessimistic locking", "select for update" etc. Here is also a basic (but good) introduction to working with databases in go (if you need it): go-database-sql.org/index.html
我正在学习创建 HTTP API,
我正在创建一个虚拟 API 信用系统,因为这是我特别感兴趣的。
这是我想出的:(我正在使用 PQ Driver)
if !dummy.creds <= 0 {
c.JSON(404, gin.H{
"success": false,
"message": "No Credits!",
})
return
}
但是,假设我将 SQL table 编辑为 50 个积分,如何在每次查询虚拟 API 时减去 1 个积分?
例如,如果我查询 API 并且它 returns 来自 SQL table 的成功虚拟数据(在 JSON 中),我怎样才能减去一个学分,这样我只有 49 个学分,然后是 48、47、46 等等
更新:这是我想出的
_, err := db.Exec("UPDATE dummy SET creds = -1 WHERE email = ")
if err != nil {
log.Fatal(err)
}
它没有工作,没有做任何事情。
我做错了什么?
对此的任何答案和知识都将是惊人的!
谢谢!
@seva 发表
I believe the question is about returning consistent results. It's not about go then. It's about database. Search "optimistic locking" vs "pessimistic locking", "select for update" etc. Here is also a basic (but good) introduction to working with databases in go (if you need it): go-database-sql.org/index.html