多用户update数据时,不能保证完整性

lqmaster 2004-08-19 06:10:51
DataModule1.database1.StartTransaction;

with qryfree do
begin
close;
sql.clear;
sql.add('Update MZJCK set JIESUANZT=1 Where DJH= :DJH ');
parameters.ParamByName('DJH').value:=djhid;
execsql;
close;
sql.clear;
sql.add('Update MZCKDKHZ set JIESUANZT=1 Where DJH= :DJH ') ;
parameters.ParamByName('DJH').value:=djhid;
execsql;
close;
sql.clear;
sql.add('Update MZCKDK set JIESUANZT=1 Where DJH= :DJH ') ;
parameters.ParamByName('DJH').value:=djhid;
execsql;
end;

DATAMODULE1.Database1.Commit;
except
DATAMODULE1.Database1.Rollback;
application.MessageBox('数据保存错误.检查输入.','提示',mb_iconinformation+mb_ok);
exit;
end;



在上面的程序段执行后,三个数据表(SQL SERVER 20000)MZJCK、MZCKDK、MZCKDKHZ中的JIESUANZT都应为1,但说不定哪一天会出现mzjck中的JIESUANZT=1,而MZCKDK,MZCKDKHZ中的不为1,但程序运行时一点出错信息都没有。
三个表中,MZJCK中数据量是MZCKDKHZ的50%,MZCKDKHZ是购MZCKDK的50%,但更新不应和数据量的大小有关,是不是在更新时,有别的用户正在操作这三个表,才造成有的数据没有更新?
是什么原因,怎样解决呀???
...全文
228 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqmaster 2004-09-10
  • 打赏
  • 举报
回复
怎样锁定要更新的表?

lqmaster 2004-09-10
  • 打赏
  • 举报
回复
我用的是正版server ,不是个人版
okimrong 2004-09-10
  • 打赏
  • 举报
回复
学习!
maxtool 2004-09-10
  • 打赏
  • 举报
回复
加锁~~~
ffjf 2004-09-10
  • 打赏
  • 举报
回复
应该放在服务端过程中的事务中进行处理.
ffjf 2004-09-10
  • 打赏
  • 举报
回复
应该放在事务中进行处理.
chenylin 2004-09-01
  • 打赏
  • 举报
回复
你有可能使用的是个人版,有时是会,用Server版就不会出现这种情况.而且这两个版本一般情况下,只要用SA做连接,好象差别不大,就误认为是Server版.
lqmaster 2004-09-01
  • 打赏
  • 举报
回复
确实在这种情况,但不是经常
night_cat 2004-08-29
  • 打赏
  • 举报
回复
关注
hsmserver 2004-08-29
  • 打赏
  • 举报
回复
要锁定要更新的表,
同时更新肯定会出问题的
hmily1688 2004-08-29
  • 打赏
  • 举报
回复
我觉得不会出现你说的哪种情况 。

2,497

社区成员

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

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