identity乱编号?

fb 2000-01-24 08:22:00
我曾设计过几个表,关键字段名为trans_id,用以记录流水号,字段类型为INT(indentity,1,1),希望能自动编号,开始时工作很好,使用一段时间后,就会出现问题:
如已经自动编到1234号(无1230号,可能该条记录被用户删除),下一条记录却不会被编为1235号,而是1230号。
为什么?
...全文
237 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn2000 2000-03-09
  • 打赏
  • 举报
回复
SQL中的identity属性是为了保持标识的唯一性而不是顺序性
july 2000-01-31
  • 打赏
  • 举报
回复
很对不起,最近出现的问题,未能给你回信,希望见谅。
关于indentity的编号,我是在实际使用中发现的,我还没有见过啥书上提过此问题
july 2000-01-26
  • 打赏
  • 举报
回复
使用Indentity属性的表,必须是只增加不删除的表否则它的编号不仅不连贯并且会严重跳号,最好的方法是自己编程实现本功能!!
Michael 2000-01-24
  • 打赏
  • 举报
回复
indentity列是最后一列的编号开始的,如自动编号到1234时,即使此记录删除后下一条记录的编号是1235,此类列是不会回收已删除的编号。
zdg 2000-01-24
  • 打赏
  • 举报
回复
identity肯定是找一个最小的可用编号, 有两种方法解决这个问题:
1) 不用identity, 自己计算最大的再加1就是下一个编号.
2) 删除纪录的时候不用Delete, 而是给纪录增加一个删除标志字段并设置为删除. 因为不是实际的删除操作, 所以, 号码也会是连续的...
祝你好运...
Michael 2000-01-24
  • 打赏
  • 举报
回复
依然是这个问题,事实上SQL Server中的indentity列每发生一次Insert语句,Indentity就要消耗一个编号,不知所说的新增记录的编号未顺序递增,是不是由此产生?
若要真正的顺序号,最好自己编写一序号产生器来完成。
fb 2000-01-24
  • 打赏
  • 举报
回复
Michael的回答确实如此,我手工试验过,indentity只会递增,即使将前面的记录删除,
但是,我有两个系统都发生过新增的记录的编号未顺序递增?问题依然存在,征求高见。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧