事務下的多用戶操作表問題(200分)

  • 主题发起人 主题发起人 honey
  • 开始时间 开始时间
H

honey

Unregistered / Unconfirmed
GUEST, unregistred user!
在啟動一個事務后, 對某個表進行操作, 一旦有了post動作后, 在提交前,
另一個用戶啟動程序, 在打開該表時報超時錯.
請教大俠們,是否可以在不改用query的情況下,通過什么設置可以解決?
我的環境是sql7 c/s型,編程環境為delphi5.0,
打不開的表是某個主表的detail表,但同時又是某個表的主表.(但后來我發
現其他表也出現類似現象).
我的程序差不多完成了, 拿到網絡上試作多人操作時才發現這問題,
很多表本身又有很多事件,如果此時換成query, 我几乎等于重做.
 
写的什么,怎么都是乱字符呢?
 
应该是BIG5的吧,反正我看到的是繁体的。
 
事务编程的一个重要原则就是:事务时间要尽可能短,尤其不要在事务过程中执行人机交互
操作,这是大忌,你估计就是犯了这个错误,否则一般事务是不会把表锁定直至别人使用超时
的。
 
I agree with BaKuBaKu
 
对多用户使用的环境,是不能用太长时间的事务。
你可以设置 Table.CacheUpdates:=true
并且不要一开始就 StartTrasaction
这样修改记录时只是在本地修改,并没有写到数据库上,
也不会锁定该表。但是记住要保存数据到数据库,
可以放一按钮,或者在关闭窗口前,将所有的修改,
只保存一次到数据库:
database.StartTransaction;
try
Table.ApplyUpdates();
database.CommitTransation;
excpt
database.RollBack;
end
Table.CommitUpdates();
如果没做上面几行,数据是不会保存到数据库的。
这样做使数据库仅锁定一个短时间

 
多人接受答案了。
 
后退
顶部