数据提交并发控制问题之二(附代码,请高手捉虫),在线献分!
有表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
其实可能这种数据转移的问题大家都处理过,我怀疑自己的写法有问题,请大家捉虫,并请提出好的解决方法!给出正确的写法!