首页 > 解决方案 > DB Transaction:我们可以只阻止一条记录,而不是整个表吗?

问题描述

我正在尝试将数据插入到WalletsSQL Server 数据库的表中。可以同时有很多请求,所以由于敏感信息我必须使用事务。

工作流程如下:

  1. 读取用户钱包的金额

  2. 根据之前收到的数据插入新记录

我尝试了不同的隔离级别,但在所有情况下,事务都会阻塞整个表,而不仅仅是我正在使用的记录。甚至ReadUncommittedRepeatableRead挡住整张桌子。

有没有办法只阻止我正在使用的记录?


让我详细说明一下:我不使用表中的任何索引

工作流程(将 C# 转换为 SQL)如下:

1) 从天平中选择 * 2) 插入 ... INTO 天平

标签: c#sqlsql-serverdapper

解决方案


您应该使用乐观锁定。那只会锁定当前行。不是整张桌子。

您可以阅读以下链接以获取更多参考:-

乐观锁

乐观并发


推荐阅读