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


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

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

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


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望: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编辑过]

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


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望: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编辑过]

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


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望: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()


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


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望: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()

 

 

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


 回到顶部