以文本方式查看主题 - 搭建论坛 (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 |