0

我正在学习创建 HTTP API,

我正在创建一个虚拟 API 信用系统,因为这是我特别感兴趣的。

这就是我想出的:(我正在使用PQ 驱动程序

if !dummy.creds <= 0 {
    c.JSON(404, gin.H{
        "success": false,
        "message": "No Credits!",
    })
    return
}

但是,假设我编辑 SQL 表说 50 Credits,每次查询虚拟 API 时如何减去 1 Credit?

因此,例如,如果我查询 API 并从 SQL 表中返回成功的虚拟数据(以 JSON 格式),我如何减去一个信用,这样我只有 49 个信用,然后是 48、47、46 等。

更新:这就是我想出的

_, err := db.Exec("UPDATE dummy SET creds = -1 WHERE email = $1")
if err != nil {
    log.Fatal(err)

}

它没有工作,而是什么都做不了。

我究竟做错了什么?

对此的任何答案和知识都会令人惊叹!

谢谢!

4

1 回答 1

0

正如@seva 发布的那样

我相信问题在于返回一致的结果。那就不走了。这是关于数据库的。搜索“乐观锁定”与“悲观锁定”、“选择更新”等。这也是在 go 中使用数据库的基本(但很好)介绍(如果需要):go-database-sql.org/index .html

于 2018-08-19T11:02:12.557 回答