以文本方式查看主题

-  搭建论坛  (http://bbs.diylsoft.com:8118/starforum/index.asp)
--  用户咨询  (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=4)
----  如何设置一个可以自动递增的编号呢?  (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=4&id=30266)

--  作者:alin999
--  发布时间:2010-6-8 23:24:53
--  如何设置一个可以自动递增的编号呢?

软件里有个字段  需要一个编号

 

编号可以在新增的时候递增 比如 1  2  3 4

 

看来很简单

 

如何实现呢

 

办法1 

 

取当前记录数量 +1   比如当前记录是 8  那么+1=9

 

但是这样的话 如果把编号是7的删除了  再增加  那么  最后一个还是8+1=9

 

办法2  新增的时候 去上一记录的值 +1

 

上一记录是 33  +1=34

这个时候如果记录在其他的地方 插入的 记录就不好找最后一个了

 

 

怎么能找到一个好的办法  使得插入的记录永远是最大呢

 

 

 

 


--  作者:引力波
--  发布时间:2010-6-9 20:26:29
--  

把编号这个字段设置成“数值型”,然后使用“数据统计”构件,得到“最大值”,编号=最大值+1


--  作者:alin999
--  发布时间:2010-6-9 22:39:52
--  

看似简单的问题 

 

困扰很久了


--  作者:x123992009
--  发布时间:2010-6-18 18:15:01
--  

方法一。排序,查找了。。得到最大一个数。

 

方法二。每次增加都把目前的序号。加到一个表的字段里记起来。。同时。增加时。去看那个表中的序号是多少了在加一了。。

 

方法三。。有空在想。


--  作者:jsphp
--  发布时间:2010-6-18 18:17:10
--  

哈哈,估计是不行,空想!


--  作者:jsphp
--  发布时间:2010-6-18 18:19:55
--  

如果两个人 同时取该值,得到的编号 不就相同了吗。


--  作者:jsphp
--  发布时间:2010-6-18 18:21:29
--  
还必须要锁定,但锁定也没法保证不同时,所以这个活,必须由数据库本身来做。
--  作者:x123992009
--  发布时间:2010-6-19 18:19:14
--  

楼上的。  多想了。。。数据库它本身在处理数据时就会分先后的。    那怕是。0.000001秒(猜的。嘿嘿)。它也可以区分。。所以不用怕有两个人同时取这个值。。

 

当然。你要在命令上写好。。。一定要取了马上增加。  不要缓存。。


--  作者:zhongjian
--  发布时间:2010-6-29 17:01:40
--  

这有一个例子

    http://web.diylsoft.com:8118/starforum/dispbbs.asp?boardid=6&Id=30313