我有一个执行每晚计费的Azure工作者角色。因为Azure可以随时创建一个新实例,然后在关闭运行实例之前将其完成,所以我必须通过事务确保该工作人员中只有1个向特定客户收费。给人两次充电往往会使他们不高兴。
所以我有
客户记录有一个时间戳列。当我更新记录时,我有“ CustomerId = @id和ts = @ts”的位置,因此,如果时间戳更改,更新将失败(返回更新的0行)。
我应该对事务/隔离级别使用什么,以及如何对它进行编码(C#),这样,如果2个工作人员尝试针对同一记录同时执行此操作,则该工作将失败。我进行了更新中的时间戳检查后,标准(无论意味着什么)交易就足够了吗?
还是我需要做一些事情以便读取记录使我完全掌握该记录?如果发生这种情况,当另一个工作人员尝试读取该记录时会发生什么?有例外吗还是暂停直到第一个工作人员提交事务,然后读取成功?
谢谢-戴夫