问题:多人同时编辑操作的时问题 ( 积分:100, 回复:6, 阅读:76 )
分类:数据库-C/S型 ( 版主:千中元, luyear )
来自:hutaomoney, 时间:2001-7-27 11:08:00, ID:591243 [显示:小字体 | 大字体]
几个DBEDIT控件关联到一个数据表,我采用缓存更新,在单机上做修改记录一点问题没有。
可是一但两台机同时做,只要其中一人修改别人已改变的记录就会报错‘记录已被另一用户改变',以后改别的
记录也不能成功,也报同样的错。谢谢高手赐教!
//存盘时的代码
With DmBaseData.QGroupdo
begin
DmBaseData.ShopDB.StartTransaction ;
Try
ApplyUpdates;
DmBaseData.ShopDB.Commit ;
Except
DmBaseData.ShopDB.Rollback ;
Raise ;
end;
CommitUpdates;
//{on success, clear the cache}
end;
来自:千中元, 时间:2001-7-31 22:26:00, ID:593196
1)确保有主键
2)结合数据库,选择Database的策略
来自:flysand, 时间:2001-7-31 22:54:00, ID:593218
skip该记录再applyupdates
来自:Brave, 时间:2001-8-1 9:21:00, ID:593365
这个问题不仅是在多台机器上使用才会出现,同一台机器上,如果你打开两个同样的程序,
两个程序同时操作,用一个程序先新增一条记录,然后用第二个程序删除该记录,
这时第一个程序因为没有执行刷新,仍会显示该条记录,你再在这条记录上执行修改操作,
然后保存,就汇报错“记录已被另一用户改变”。类似的,多个用户对同一记录执行操作,
就会出现上述问题,这是数据库自带的保护机制,你不好控制,也不应该控制。如果要避免
这个现象,就要为每个用户设置不通的操作权限,避免所个用户同时操作一条记录。
来自:ls2000, 时间:2001-8-1 9:40:00, ID:593382
这是数据库保护一致性而设置的,你可以先refresh数据表,然后再修改.应该没有问题了.
来自:铁锈, 时间:2001-8-1 10:31:00, ID:593432
一个人操作完毕把表关闭,第二人再操作。试试看
来自:fishor, 时间:2001-8-3 20:59:00, ID:594550
看