Database 同时插入数据,而新行应基于上次插入的行进行计算
我正在开发一个系统,根据用户在交易上的花费给他们打分 每当客户执行交易时,会将一条消息推送到sqs并触发lambda(.net core、Ef core、postgresql),该lambda检查该客户的积分表中是否存在积分,如果是,它将根据上次接收的点计算新点,并插入另一行,因为我们需要维护点历史记录。但是,当用户同时执行多个事务时,点数计算不正确 积分表 用户ID点前点后点接收到的transactionid 1 0 10 10 1 1 10 20 10 2 1 20 30 10 3 12030104 事务id 3和4->同时发生 我尝试了各种隔离级别,比如读提交和序列化。但不起作用Database 同时插入数据,而新行应基于上次插入的行进行计算,database,postgresql,concurrency,aws-lambda,isolation-level,Database,Postgresql,Concurrency,Aws Lambda,Isolation Level,我正在开发一个系统,根据用户在交易上的花费给他们打分 每当客户执行交易时,会将一条消息推送到sqs并触发lambda(.net core、Ef core、postgresql),该lambda检查该客户的积分表中是否存在积分,如果是,它将根据上次接收的点计算新点,并插入另一行,因为我们需要维护点历史记录。但是,当用户同时执行多个事务时,点数计算不正确 积分表 用户ID点前点后点接收到的transactionid 1 0 10 10
谁能帮我解决这个问题 如果使用可序列化隔离级别,那么当系统检测到异常时,一个事务将出现序列化错误,并且必须回滚并重试
或者,您可以在应用程序中设置编码规则,即任何计划潜在插入积分记录的人都必须在读取或插入积分之前锁定客户记录(“选择……进行更新)。您的示例中存在一些格式问题,使其难以理解。你能重新格式化吗?