怎样实现数据库同步呢?

我碰到了一个问题,用INTERBASE 6.5做数据库服务器,两台电脑共享一个数据库,可是运行过程中不同步。一台电脑的界面上显示数据改变了,另一台显示结果不改变。只有把一台电脑上的软件关闭,才会两个结果显示一致。
---------------------------------------------------------------

在另一台的查询前,加入IBTransaction.active:=false;
---------------------------------------------------------------

这是和ib处理事务的方式有关. ib是用多版本事务, 不是用锁表方式, 好处是当某纪录被更新中的时候, 其他用户不会因锁表而不能工作, 其他用户只看到已committed的纪录, 但不知道现在更改中但未post+committed的更改.

不好处就如楼主所面对的困难了. 一些用户可能因此在提交更改时有错误发生.

因此你是视乎你所用的工具, 如ibo可以用更新之前, 再次读取最新的纪录. 假如你可以控制用户在更新的过程时间是最少, 问题出现的机会便会愈少了.
---------------------------------------------------------------

UP

---------------------------------------------------------------

我前面讲的方法是绝对可行的,我的很多程序都是这样做的,
你的不行,我想可能是你保存数据的时候没有显式的调用commit,而是等ibdatabase关闭时自动调用commit,所以不行

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus