过程A: update T_Base_Lot_Send_Bonus
set F_LotID=10000,F_LotName='任选九场'
where f_lotid=1 and F_Wtype in (43, 44,123);
v_rownumber := sql%rowcount;
update T_Base_ProJ
set F_LotteryID=10000,F_LotName='任选九场'
where F_LotteryID=1 and F_Wtype in (43, 44,123);
--以上两个表的数据只把F_lotteryid更新为10000 而F_LOTNAME 依旧是旧数据
update T_Base_New_Tared_User
set F_LottyID=10000, F_LottyName='任选九场'
where F_LottyID=1 and F_WID in (43, 44,123);
--而这个表就能成功全部更新问题 会不会 过程A更新是 ORACLE 不是锁定一行而是锁定一个字段,先更新完第一个字段,再锁定第二个字段来更新。?因为手工 执行UPDATE语句没问题,特意做了几条数据来测试,手工执行该过程也没问题!怀疑过程B
update T_Base_ProJ
set F_Wtype=1,F_WName='复式合买'
where F_LotteryID=10000 and F_Wtype=43 and F_IsCooperateBuy=1;
v_rownumber := v_rownumber+sql%rowcount; update T_Base_ProJ
set F_Wtype=3,F_WName='单式合买'
where F_LotteryID=10000 and F_Wtype=44 and F_IsCooperateBuy=1;
v_rownumber := v_rownumber+sql%rowcount; update T_Base_ProJ
set F_Wtype=-1,F_WName='胆拖合买'
where F_LotteryID=10000 and F_Wtype=123 and F_IsCooperateBuy=1;
v_rownumber := v_rownumber+sql%rowcount;
--把A过程的条件给更新掉了,所以A过程就没办法更新F_LotName可从日志来看 A过程比B过程先执行,也先执行完!理论上它们时间上没有重叠啊
序号 F_DATE 层次 过程名 影响行数 开始时间 结束时间 运行时间分钟 操作 成功与否
14 2009-07-24 BASE P_BASE_DAY_U_PLAYID 3,2962 2009-07-24 05:42:56 2009-07-24 05:53:10 10 UPDATE 成功
19 2009-07-24 BASE P_BASE_DAY_U_LOTID 4,3357 2009-07-24 05:36:00 2009-07-24 05:42:08 6 UPDATE 成功
set F_LotID=10000,F_LotName='任选九场'
where f_lotid=1 and F_Wtype in (43, 44,123);
v_rownumber := sql%rowcount;
update T_Base_ProJ
set F_LotteryID=10000,F_LotName='任选九场'
where F_LotteryID=1 and F_Wtype in (43, 44,123);
--以上两个表的数据只把F_lotteryid更新为10000 而F_LOTNAME 依旧是旧数据
update T_Base_New_Tared_User
set F_LottyID=10000, F_LottyName='任选九场'
where F_LottyID=1 and F_WID in (43, 44,123);
--而这个表就能成功全部更新问题 会不会 过程A更新是 ORACLE 不是锁定一行而是锁定一个字段,先更新完第一个字段,再锁定第二个字段来更新。?因为手工 执行UPDATE语句没问题,特意做了几条数据来测试,手工执行该过程也没问题!怀疑过程B
update T_Base_ProJ
set F_Wtype=1,F_WName='复式合买'
where F_LotteryID=10000 and F_Wtype=43 and F_IsCooperateBuy=1;
v_rownumber := v_rownumber+sql%rowcount; update T_Base_ProJ
set F_Wtype=3,F_WName='单式合买'
where F_LotteryID=10000 and F_Wtype=44 and F_IsCooperateBuy=1;
v_rownumber := v_rownumber+sql%rowcount; update T_Base_ProJ
set F_Wtype=-1,F_WName='胆拖合买'
where F_LotteryID=10000 and F_Wtype=123 and F_IsCooperateBuy=1;
v_rownumber := v_rownumber+sql%rowcount;
--把A过程的条件给更新掉了,所以A过程就没办法更新F_LotName可从日志来看 A过程比B过程先执行,也先执行完!理论上它们时间上没有重叠啊
序号 F_DATE 层次 过程名 影响行数 开始时间 结束时间 运行时间分钟 操作 成功与否
14 2009-07-24 BASE P_BASE_DAY_U_PLAYID 3,2962 2009-07-24 05:42:56 2009-07-24 05:53:10 10 UPDATE 成功
19 2009-07-24 BASE P_BASE_DAY_U_LOTID 4,3357 2009-07-24 05:36:00 2009-07-24 05:42:08 6 UPDATE 成功
过程是自动COMMIT
今天 单独UPDATE LOT_NAME='XXXX'; COMMIT; 也不行