我正在学习创建HTTP API,
我正在创建一个虚拟的API信用系统,因为这正是我特别感兴趣的。
这是我想出的:(我正在使用PQ Driver)
if !dummy.creds <= 0 {
c.JSON(404, gin.H{
"success": false,
"message": "No Credits!",
})
return
}
但是,假设我编辑SQL表以说50个信用,每次查询虚拟API时如何减去1个信用?
因此,例如,如果我查询API并从SQL表返回成功的伪数据(以JSON格式),我该如何减去一个积分,这样我只有49个积分,然后是48、47、46,等等
更新:这就是我想出的
_, err := db.Exec("UPDATE dummy SET creds = -1 WHERE email = $1")
if err != nil {
log.Fatal(err)
}
它没有执行任何操作。
我在做什么错了?
任何答案和知识都将是惊人的!
谢谢!
答案 0 :(得分:0)
由@seva发布
我认为问题在于返回一致的结果。那不是要走了关于数据库。搜索“乐观锁定”与“悲观锁定”,“选择更新”等。这也是在go中使用数据库的基本(但很好的)介绍(如果需要):go-database-sql.org/index .html