【发布时间】:2020-01-18 14:47:13
【问题描述】:
我正在开发一个系统,该系统根据用户在交易上花费的金额给予积分
每当客户执行交易时,一条消息将被推送到 sqs 并触发一个 lambda(.net core,Ef core,postgresql)检查该客户的积分表中是否存在积分,如果是,则计算新积分基于最后收到的积分并插入另一行,因为我们需要维护积分历史。但是,当用户同时执行多个事务时,积分计算不正确。
积分表
用户id 点前点后点接收到的事务id 1 0 10 10 1 1 10 20 10 2 1 20 30 10 3 1 20 30 10 4
事务 id 3&4 -> 同时发生。
我尝试了各种隔离级别,例如已提交读和可序列化。但不工作。
谁能帮我解决这个问题。
【问题讨论】:
-
您的示例存在一些格式问题,使其难以理解。可以重新格式化吗?
标签: database postgresql concurrency aws-lambda isolation-level