小编Rob*_*ler的帖子

锁定 Postgres 以进行 UPDATE / INSERT 组合

我有两张桌子。一个是日志表;另一个本质上包含只能使用一次的优惠券代码。

用户需要能够兑换优惠券,这将在日志表中插入一行并将优惠券标记为已使用(通过将used列更新为true)。

当然,这里存在明显的竞争条件/安全问题。

我过去在 mySQL 的世界里做过类似的事情。在那个世界中,我会全局锁定两个表,在知道这一次只能发生一次的情况下执行逻辑安全,然后在我完成后解锁表。

Postgres 有没有更好的方法来做到这一点?特别是,我担心锁是全局的,但不是必须的——我真的只需要确保没有其他人试图输入那个特定的代码,所以也许一些行级锁会起作用?

postgresql concurrency locking update

15
推荐指数
1
解决办法
2万
查看次数

标签 统计

concurrency ×1

locking ×1

postgresql ×1

update ×1