奇怪的SYBASE数据库的问题?

e_xu 2007-02-01 02:34:32
PB+sybase数据库
在PB中写如下代码:
delete st_curstock where dept_stroe=’9301’;
update st_curstock set mater_id='10C-09032’ where mater_id='24N-01074’;
执行时数据库死锁,无法执行.
当换成如下信息时:
delete st_curstock where dept_stroe=’9101’;
update st_curstock set mater_id='20C-09032’ where mater_id='24N-01074’;
是何原因,请高手帮忙解决?重分酬谢!

...全文
300 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ropriest 2007-02-02
  • 打赏
  • 举报
回复
一般将SQLCA的自动提交设置为false
SQLCA.AutoCommit = False

在delete和update这些操作后都加判断,单独Commit,不成功就回滚。如:
delete st_curstock where dept_stroe=’9101’;
If SQLCA.sqlcode=0 Then
Commit;
Else
MessageBox("","xxx失败!代码:"+String(sqlca.sqlcode))
Rollback;
Return
End If
jdsnhan 2007-02-02
  • 打赏
  • 举报
回复
事物的递交与回滚是很重要的。
dongjixing 2007-02-02
  • 打赏
  • 举报
回复
lz,散分吧,给我也分点
nongly 2007-02-02
  • 打赏
  • 举报
回复
1)你的delete语句和update语句有没有要求是在同一个事务中?没有的的话在delete后就判断该commit或rollback。
2)还有一种情况,数据库配置成了页面锁,要delete的记录和update的记录刚好在同一个页面上,
lzheng2001 2007-02-01
  • 打赏
  • 举报
回复
当然一般要判断sqlca.sqlcode 如果成功则commit,否则rollback;
lzheng2001 2007-02-01
  • 打赏
  • 举报
回复
一般情况下,多用户操作是最常见的引起死锁的根源, 如果你的数据库有多个人在使用的话,必须在更新完成后加上commit语句,不则就会出现你上面说的现象.

delete st_curstock where dept_stroe=’9101’;
update st_curstock set mater_id='20C-09032’ where mater_id='24N-01074’;
commit;

1,111

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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