数据更新的并发问题。请教

[复制链接]
查看11 | 回复0 | 2014-5-16 16:44:50 | 显示全部楼层 |阅读模式
白天没看见不好意思青云。我做个表结构的示例。
create table demo_fasheng
(status varchar2(1)
amount number,
id number);
insert table demo_fasheng values('N',50,1);
insert table demo_fasheng values('N',60,1);
insert table demo_fasheng values('P',100,1);
create table demo_yue
(id number,
amount number);
insert into table demo_yue values(1,200);
以id为唯一连接条件。
实际操作就是取出demo_fasheng中status为N的数据。如果demo_fasheng.amountv_amount1
then
rollback;
p_code:=-3;
p_msg:='申请的金额是:'||to_char(v_amount)||
',但是当前账面只剩下'||to_char(v_amount1-v_apply_amount+v_amount);
retrun;
end if;
p_code:=0;
p_msg:=to_cahr(P_FASH_ID )||'申请金额'||to_char(v_mount)||
'成功,对于月账面上还剩余'||to_char(v_amount1-v_apply_amount);
END;

以上是我的写作风格,呵呵,全是“进攻”手法;没有一句select
这样最安全;并发风险小,而且效率高;
我上面提到的 在 demo_yue 里加一个字段: apply_amount ;这个理论上是必须加的,否者没法避免多人同时申请并发判断错误问题;
[ 本帖最后由 qingyun 于 2010-11-15 00:13 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行