使用版本列保证乐观并发

来源:互联网 发布:javascript onload 编辑:程序博客网 时间:2024/05/03 16:07

 

项目对账户做账需要实现如下逻辑:

 1)检查账户余额是否透支

2)生成记账凭证(在记账凭证中插入一条记录)

3)刷新账户余额表当日余额(账户余额表每天一条记录)

 以上过程使用存储过程实现。

 步骤(1)需要查询若干数据库表,进行少量的运算,需要花费较长的时间,在多个用户并发的情况下会出想账户余额透支的情况.

 当前系统实现利用了版本控制的乐观并发。在账户余额表添加版本号列(BALANCE_VERSION),在步骤(1)以前获取要更新账户余额表记录的版本号(balanceVersion),在步骤(3)中更新账户余额表记录时,添加WHERE BALANCE_VERSION = balanceVersion条件,用SQL%ROWCOUNT检查更新列数,如果不等于1,抛出异常。

 

原创粉丝点击