pb的transaction在commit成功后,数据库中为什么没有立即被commit啊?

wpc 2004-09-07 03:03:15
我在pb中将一个数据窗口update之后,使用commit using trans(我自己create的transaction),并且检查trans.sqlcode = 0然后报保存成功。但是有时候显示保存成功后,我在另外的机器上看不到保存的数据(查找数据库也没有),只在当前机器上能看到,住一段时间后,这条数据有可能被保存到数据库中,但有时就直接丢失了,因为情况只是偶尔出现,不知为什么,那位大虾能帮忙阿
...全文
525 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
10975037 2004-09-09
  • 打赏
  • 举报
回复
所有的transave.sqlcode 写成一个模式:
if transave.sqlcode = 0 then
commit using transave;
messagebox("成功","保存成功")
else
rollback using transave;
messagebox("错误","保存失败")
return
end if




lzheng2001 2004-09-09
  • 打赏
  • 举报
回复
哈哈,你的代码中为什么有些rollback 中用了using 而有些则没有加using ? 估计就是这个问题了,请在所有ROLLBACK或COMMIT语句中使用USING ...
jadkyin 2004-09-09
  • 打赏
  • 举报
回复
是不是并发的问题啊?
wantsong 2004-09-09
  • 打赏
  • 举报
回复
commit 并不一定代表transave.sqlcode <> 0,换句话说commit并不一定绝对成功。
如果出现这样的问题可以在commit后查一下sqlcode
wpc 2004-09-08
  • 打赏
  • 举报
回复
下面是我的代码,大虾看看有没有问题阿

if ldw.update() = 1 then
insert into todolist(xh,regno,recdept,infotype,regdate)values(:ll_xh,:ls_lsh,:xzqh,'4',:dt_now) using transave;
if transave.sqlcode <> 0 then
rollback using transave;
messagebox("错误","保存失败")
return
end if

insert into infotransfer(regno,xh,sendate,sendept,senduser,recdept,infotype,transtype,status) values(:ls_lsh,1,:dt_now,:xzqh,:userid,:xzqh_12315,'4','0','01') using transave;
if transave.sqlcode <> 0 then
rollback using transave;
messagebox("错误","保存失败")
return
end if

insert into regstate(regno,sj12315,sjcs) values(:ls_lsh,'01','01') using transave;
if transave.sqlcode <> 0 then
rollback using transave;
messagebox("错误","保存失败")
return
end if


commit using transave;
if transave.sqlcode = 0 then
messagebox("成功","保存成功")
else
rollback;
messagebox("错误","保存失败")
return
end if
else
rollback;
messagebox("错误","保存失败")
return
end if
yelang771 2004-09-08
  • 打赏
  • 举报
回复
up
sharelove 2004-09-08
  • 打赏
  • 举报
回复
别忘记啦
dw_1.settransobject(trans)
commit using trans;
lzheng2001 2004-09-07
  • 打赏
  • 举报
回复
通常这人为错误的机会比较大,把代码贴出来看看
zhouweiwansui 2004-09-07
  • 打赏
  • 举报
回复
怎么会有这种错误,奇怪
wangxichen 2004-09-07
  • 打赏
  • 举报
回复
没错误、偶尔出错,有点怪!

会不会有什么渠道把数据保存到别的机器上了,比如客户端连接的服务器不正确等
qinluo 2004-09-07
  • 打赏
  • 举报
回复
这种问题没遇到过,我也认为代码有问题,你最好把每一句有关数据库操作的步骤都检查其SQLCODE,和SQL无关的也要检验其正确性,才好找出原因。
wjlforever 2004-09-07
  • 打赏
  • 举报
回复
那是不是网络的问题呢!
帮你顶!关注!
wpc 2004-09-07
  • 打赏
  • 举报
回复
有时出现的情况是一台机器上显示保存成功(我是让trans的commit返回的sqlcode=0时才报保存成功的),在当台机器上查询显示没有问题,但在别的机器上用同样的程序查询却查不到。在另外的机器上查数据库也没有。
wjlforever 2004-09-07
  • 打赏
  • 举报
回复
那重装pb!
:)
wpc 2004-09-07
  • 打赏
  • 举报
回复
数据库连接是正确的,使用的是手动提交方式,我是程序运行报保存成功后去查数据库中没有的。dw_1.SetTransObject(trans)我也设了阿,问题是平时运行没有问题,但偶尔会出现,当我再想重现这种情况时就不出来了。痛苦阿
lzheng2001 2004-09-07
  • 打赏
  • 举报
回复
要设置 trans.autocommit = false 这样使用COMMIT才有意义
lzheng2001 2004-09-07
  • 打赏
  • 举报
回复
只要COMMIT了,别人能够查到更新了的数据的,所以你的代码肯定有问题
CL0 2004-09-07
  • 打赏
  • 举报
回复
如果使用自己的trans,那么别忘了dw_1.SetTransObject(trans)!!!
wangxichen 2004-09-07
  • 打赏
  • 举报
回复
数据库是自动提交方式还是手动提交方式?

数据库连接是否正确?

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧