如何保证并发? 多个用户可能对同一个账户做支取操作,为了保证账户不透支,需要在支取(插入一条支取记录)之前做账户的余额检查,这个地方需要做同步处理。整个过程是用Oracle的存储过程实现的,请问如何实现能保证并发?DBMS_LOCK建议使用么?还有别的方法么,比如在余额检查前取出账户余额,插入支取记录再取一次余额,比较两次记录? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select ..... for update不能满足要求??? 是插入一条记录,过程较复杂。所以select...for update不能满足。 不太明白,你首先是要更新记录,如果更新成功才能插入操作记录首先查询 SELECT .... FOR UPDATE...判断有余额,则取钱,UPDATE ...SET 总金额=总金额-取钱数 ....然后插入当前取钱记录 INSERT .....value 取钱数无异常则,提交....释放 UPDATE锁... 使用串行化事务隔离级别set transaction isolation level serializable 谢谢回复。我对select for update不熟练,再研究下。准备加一个版本列使用乐观锁实现。使用串行化事务隔离级别肯定不行啊。 查询a,b,c三个表的一些字段 可是b表需要UNION ALL b的历史表 可以实现吗? 求教一个查询SQL ORACLE8.17冷备份的问题,请教高手。 如何导入导出大量数据(数据量在2.4G), 关于Oracle同步数据库问题? 关于oracle数据库查询与JDBC的问题 小问:你一句话! 使用number类型的自增字段作主键是否可以提高性能? 两张表的SQL查询:超难! 有什么好办法解决三个字段确定唯一性的好办法呢? 存储过程求救 oracle 存储过程调用的问题
判断有余额,则取钱,UPDATE ...SET 总金额=总金额-取钱数 ....
然后插入当前取钱记录 INSERT .....value 取钱数
无异常则,提交....释放 UPDATE锁...
set transaction isolation level serializable