急手,急手问题(200分)

  • 主题发起人 主题发起人 fmz
  • 开始时间 开始时间
F

fmz

Unregistered / Unconfirmed
GUEST, unregistred user!
我在对记录进行修改(删除)后POST时出现如下提示,请各位大侠帮个忙:
A deadlock was detected your server command(family id #0,process id #9)
was deadlocked with another process and has been chosen as deadlock victim
General Sql error
re_ run your command
到底应该怎么写,请大家给个代码:
 
在POST之前申请独占唢!
 
to 风信紫:
 我是个菜鸟,能说说代码怎么写吗?
 
看起来很象是SYBASE的出错提示。
原因是你的客户端程序写得有问题,在另一台机器上运行的程序也打开了你想要update的那个表,
但是它的游标打开后没有Fetch到最后时,在这个表上就有一个共享锁了,如果你这时候update
它就升级为排它锁,你的进程就死在那了,相应的,如果它想update你锁定的记录,也会被
你的共享锁所阻止,这就是deadlock.
当然了,后加锁的就作为victim(牺牲者),被系统Kill掉了。

如果只是这个问题,那么解决方法是:
更改所有访问这个表的程序,在查询这个表时,对相应打开的数据集调用Last方法即可。
 
to szf:
 确定实是一个SYBASE出的问题,我的另处一个程序也要访问这个表,而且是一条一条的
从头到尾滚动的访问的(一直不停的循环访问),所以不能像你说的那样直接有LAST。
 
用独占方式不行
 
在你的另一个程序中这样写
DataSet.Open;
DataSet.Last;
DeatSet.First;
...这里继续你的"从头到尾滚动的访问的(一直不停的循环访问)"
 
后退
顶部