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