如何解决多层运用时,多用户同时修改同一纪录时的冲突。(200分)

  • 主题发起人 主题发起人 Lee.JH
  • 开始时间 开始时间
L

Lee.JH

Unregistered / Unconfirmed
GUEST, unregistred user!
一个WebServeis运用时遇到的问题:
Server端用DataSetProvide连接SQL数据库,
client端用ClientDataSet连接用户界面,
当客户端两个以上用户同时修改同一表纪录时,第二个提交ApplyUpdate的用户将不能更新服务端的数据。
如何实现后一个提交ApplyUpdate用户能更新服务端的数据?
 
用事务打包,应该是可以吧
 
在提交ApplyUpdate后,如果ClientDataSet仍然需要处于连接状态,建议立即刷新(指第一个用户)
 
因为是第一个用户修改后保存在先,第二个用户已不可能再保存,
故提交ApplyUpdate立即刷新的方法是行不通的。
“用事务打包”能具体点吗 ?
 
按KEY值更新。
 
如果提交的数据其他用户已经更新过了,服务端会回传出错的数据一个记录两笔数据,
clientDataSet触发OnReco??Error异常 ,这时向用户提示信息,指出哪些数据已经被
其它用户更新了,现在的数据是什么。这样不行吗?
不知道你问的是不是这个意思.
 
to yihui:是有这层意思,但我想的是在不刷新clientDataSet的数据时,
对后一用户修改的值能直接写进服务端数据库。
 
按KEY值更新可以解决你的问题。
TDataSetProvider.ResolveToDataSet:=TRUE
TBaseProvider.UpdateMode:=upWhereKeyOnly

手工加入服务器端字段的TField.ProviderFlags,使它包含关键字。
 
接受答案了.
 
后退
顶部