Foxtable(狐表)用户栏目专家坐堂 → [讨论] 建议能有一个判断其他用户是否正在执行load中save的方法。


  共有18867人关注过本帖树形打印复制链接

主题:[讨论] 建议能有一个判断其他用户是否正在执行load中save的方法。

帅哥哟,离线,有人找我吗?
wcs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
[讨论] 建议能有一个判断其他用户是否正在执行load中save的方法。  发帖心情 Post By:2009/2/4 12:10:00 [只看该作者]

对于在各个客户端手工输入的数据,在保存时系统是不会重复的,不需要这个方法。

但是对于各个客户端从同一数据源里提取的数据,就可能存在问题了:在某条记录被保存的过程中(未完成),其他客户端调用的 数据填充器 可能认为目标表中还没有这条记录,从而再追加这条记录。 所以要是有一个判断就好办一些了。这样可以解决多人同时数据填充并保存的问题。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/4 12:19:00 [只看该作者]

如果正在输入的过程呢?
这个解决不了实际问题的。

我今天发的“高级自动编号演示”,其实已经包含了如何在网络下解决冲突的技巧,只是需要借助一个标记表。

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/2/4 17:01:00 [只看该作者]

正在输入的过程,系统不是会自动给予不同的主键值吗?我对标记没有另外的特别要求,因为我的数据都提取自其他数据源。

我在想,后台数据库中建一保存标记表,只有一列一行,在进行填充、保存前先给这个地方赋值,保存完了以后再赋值。其他用户根据这个值来判断是否进行填充、保存。

我看这样应是可以的,因为这一个单元格的赋值是一瞬间的,一般不会冲突。

(我的数据填充是从10多万条记录中按条件填充,要用几秒钟的,就是这几秒钟中内多用户操作可能出现重复填充)

你看这样行吗?

[此贴子已经被作者于2009-2-4 17:02:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/4 17:24:00 [只看该作者]

可以,不过最好用SQL命令赋值,这样更快。
而且最好在SQL的UPDATE命令中加上条件,例如标志列内容为FAlse表示可以更新,设为True表示我正在更新。
如果两个人同时读值,那么都得到False值,也就是可以保存,出现同时保存的问题,所以还需要后续步骤,UPDATE语句加上条件,将标志列内容为False的更新为True,这样就不会出现两个人同时更新成功的问题,只有更新标志列成功的前提下才保存。

我发的高级自动编号演示文件,也是基于这个原理的。

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/2/4 17:28:00 [只看该作者]

哈哈

是的,考虑用UPDATE,它的速度是快,以前就领教过了。


 回到顶部