Foxtable(狐表)用户栏目专家坐堂 → 互联网上如何禁止重号


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

主题:互联网上如何禁止重号

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


加好友 发短信
等级:狐神 帖子:6887 积分:43621 威望:0 精华:0 注册:2009/3/2 14:07:00
互联网上如何禁止重号  发帖心情 Post By:2013/4/29 12:51:00 [只看该作者]

给一个新增的行赋一个值,使用下面的代码

dim r as row =currenttable.addnew()

cmd.c

cmd.commandtext="select count(_identify) from {表A}

r("行号")=cmd.ExecuteScalar()+1

r.datarow.save()

这个代码看起来是没有问题。

 

如果两个用户同时(即0.00000001秒都不差)执行这段代码,就会产生重号,假设执行

cmd.commandtext="select count(_identify) from {表A}

r("行号")=cmd.ExecuteScalar()+1

需要0.00001秒,就会新增的两行都是同一个号码。

 

 

说明一下,这个行号是自动生成的,不是手工录入的。

 

[此贴子已经被作者于2013-4-30 5:47:03编辑过]

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


加好友 发短信
等级:四尾狐 帖子:880 积分:9017 威望:0 精华:3 注册:2012/4/22 18:06:00
  发帖心情 Post By:2013/4/29 12:54:00 [只看该作者]

顶顶,呵呵

[此贴子已经被作者于2013-4-29 12:55:04编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/4/29 13:11:00 [只看该作者]

看看帮助再说

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


加好友 发短信
等级:狐神 帖子:6887 积分:43621 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2013/4/29 13:14:00 [只看该作者]

以下是引用don在2013-4-29 13:11:00的发言:
看看帮助再说

刚才表述不全:

说明一下,这个行号是自动生成的,不是手工录入的。

 

手工录入是可以防止重复值的,自动生成可能会重复。

[此贴子已经被作者于2013-4-29 13:15:57编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/4/29 13:46:00 [只看该作者]

呵呵 我觉得你这个代码不重复才怪.

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


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
  发帖心情 Post By:2013/4/29 14:27:00 [只看该作者]

太高深了,佩服!

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


加好友 发短信
等级:狐神 帖子:6887 积分:43621 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2013/4/30 5:50:00 [只看该作者]

假设完成下面这段代码需要10秒中(需要上是远远不会有这么长),一个用户第1秒执行这段代码,另一个用户第三秒执行这段代码,这样会出现两个新增的行,行号是一样的。

dim r as row =currenttable.addnew()

cmd.c

cmd.commandtext="select count(_identify) from {表A}

r("行号")=cmd.ExecuteScalar()+1

r.datarow.save()


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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/4/30 9:55:00 [只看该作者]

你没有判断你获得这个值的时候,并在你更新时,是否已经被人更新了。还是看下复杂网络下的不重复编号的。这个必须学习的

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


加好友 发短信
等级:狐神 帖子:6887 积分:43621 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2013/4/30 12:10:00 [只看该作者]

以下是引用jspta在2013-4-30 9:55:00的发言:
你没有判断你获得这个值的时候,并在你更新时,是否已经被人更新了。还是看下复杂网络下的不重复编号的。这个必须学习的

dim r as row =currenttable.addnew()

cmd.c

cmd.commandtext="select count(_identify) from {表A}

r("行号")=cmd.ExecuteScalar()+1

r.datarow.save()

 

 

你认为这段代码会有什么问题?


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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/4/30 21:55:00 [只看该作者]

以下是引用lihe60在2013-4-30 12:10:00的发言:

dim r as row =currenttable.addnew()

cmd.c

cmd.commandtext="select count(_identify) from {表A}

r("行号")=cmd.ExecuteScalar()+1    同时执行是可能存在这个问题,即使几率很低,如果有几十个人在操作出现这种问题几率就会变大,如果网络不好造成延迟,那重号几率就更大了。

r.datarow.save()

 

 

你认为这段代码会有什么问题?


你自己都说了,同时执行的时候就会出现问题


 回到顶部
总数 12 1 2 下一页