具有历史依赖性的同时插入

时间:2018-08-21 13:02:37

标签: tsql concurrency race-condition

我有一个表,通过存储过程在其中插入“交易”。每当插入“交易”时,此表上的触发器都会在“ fundUpdate”表中插入“ fundUpdate”。插入“ fundUpdate”将触发更新“基金”。为了验证所有“ fundUpdates”,我保留校验和签名“ fundUpdate”。这些校验和是根据先前和新的“ fundUpdate”计算的。

最近,我发现某支基金的校验和不匹配。这是由于该资金的同时交易引起的。交易创建了FundUpdate 9761和9762。这两个FundUpdates都使用FundUpdate 9759计算其校验和。 9762应该使用9761的校验和。请注意,这两个事务具有相同的数据,导致计算出的更新校验和相同。

example

我使用可序列化的事务隔离级别阅读可能会解决我的问题,但是我担心这可能会导致性能问题,而且我不确定100%会解决我的问题

我希望我的解释很清楚。

0 个答案:

没有答案