• 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言
pigherd 2003年04月17日
数据提交并发控制问题之二(附代码,请高手捉虫),在线献分!
有表A、B、C、D、E,其中A和C、B和D表结构相同,现在要把A中数据转移到C中,B中的数据转移到D中,如果转移成功使E中的一个字段BZ = '1',否则BZ = '0'。

对数据提交的控制一定要严格,一定要做到执行语句后只会出现两种情况:
1.全部转移成功,并且BZ = '1'
2.全部转移失败,并且BZ = '0'

我的写法如下:
LONG BZ_RETURN = 1

//转移A
INSERT INTO C SELECT * FROM A;
IF SQLCA.SQLCODE <> 0 THEN
ROLLBACK;
BZ_RETURN = 0
END IF
DELETE FROM A;
IF SQLCA.SQLCODE <> 0 THEN
ROLLBACK;
BZ_RETURN = 0
END IF

//转移B
INSERT INTO D SELECT * FROM B;
IF SQLCA.SQLCODE <> 0 THEN
ROLLBACK;
BZ_RETURN = 0
END IF
DELETE FROM B;
IF SQLCA.SQLCODE <> 0 THEN
ROLLBACK;
BZ_RETURN = 0
END IF

//修改E
IF BZ_RETURN = 0 THEN
UPDATE E SET BZ = '0';
ELSE
UPDATE E SET BZ = '1';
END IF

COMMIT;

IF SQLCA.SQLCODE <> 0 then
messagebox("提示窗","提交数据失败,错误类型为:" + string(SQLCA.SQLCODE) + SQLCA.SQLERRTEXT,EXCLAMATION!)
RETURN
END IF


其实可能这种数据转移的问题大家都处理过,我怀疑自己的写法有问题,请大家捉虫,并请提出好的解决方法!给出正确的写法!
...全文
10 点赞 收藏 14
写回复
14 条回复

还没有回复,快来抢沙发~

发动态
发帖子
PowerBuilder
创建于2007-09-28

591

社区成员

6.6w+

社区内容

PowerBuilder 相关问题讨论
社区公告
暂无公告