问个问题:SQL Server中一个表的id字段是bigint型的自动编号,结果在程序运行过程中,出现了编号断号的情况,什么原因会导致这种情况发生

yiyilc 2004-12-02 04:17:21
问个问题:SQL Server中一个表的id字段是bigint型的自动编号,结果在程序运行过程中,出现了编号断号的情况,什么原因会导致这种情况发生呢??
前提:没有对这个表进行删除操作。
...全文
199 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyilc 2004-12-03
  • 打赏
  • 举报
回复
谢谢各位!!!结贴了!!!
yiyilc 2004-12-03
  • 打赏
  • 举报
回复
谢谢各位!!!结贴了!!!
yiyilc 2004-12-03
  • 打赏
  • 举报
回复
找到原因了,就是像fycooer(水影) 说的,数据库表里定义的是varchar字段,表单中控制的输入是用maxlength控制的,结果这两种编码方式不一样,一个是用unicode,和汉字的长度不一样!!!郁闷……居然有人用中文当密码,结果超长了,就出错了,记录没添加到表里去,可是id却没了。这样就出现了断号!!!!!!!!!!
vinsonshen 2004-12-03
  • 打赏
  • 举报
回复
断号?
自动编号的表,当你插入一条数据后,接着又把这条数据删除,则下次插入记录时,ID是从之前删除数据的(ID+1)开始的
我想可能你那就是因为这个原因。
yiyilc 2004-12-03
  • 打赏
  • 举报
回复
我看了一下程序,因为我在数据提交的时候,都已经设置了输入数据的最大长度,最大长度都是小于我的表里的长度的,不太可能会出现这种情况:(
yiyilc 2004-12-03
  • 打赏
  • 举报
回复
没有触发器,数据表中记录,比如id增长:1、2、3、4、5、6、7、8、12、13、14、18……,中间出现多次断号现象。谢谢,fycooer(水影),我试试,大家也验证一下。
fycooer 2004-12-02
  • 打赏
  • 举报
回复
如果表带有触发器,如果触发器执行失败,事务回滚,记录添加失败,但是自增ID仍然会增长
fycooer 2004-12-02
  • 打赏
  • 举报
回复
急:什么原因出现自动增长ID不连续的情况?
http://community.csdn.net/Expert/topic/3608/3608513.xml?temp=.7199671

对于varchar 型字段, 当插入语句中字符超长时, 就会出现这种情况。

错误:
服务器: 消息 8152,级别 16,状态 9,行 1
将截断字符串或二进制数据。
语句已终止。

结果: 记录未插入,ID已自动增长。

老天,大家试一试!!!

guanshiyu123 2004-12-02
  • 打赏
  • 举报
回复
是不是多人同时操作一个表啊, 并发的时候可能出现这种断号吧
fycooer 2004-12-02
  • 打赏
  • 举报
回复
数据库中没有记录怎么知道有断号呢?不解
fycooer 2004-12-02
  • 打赏
  • 举报
回复
没遇到过,一般没有删除操作是不会出现断号的。当然,如果说你步长设为2或更大的,是不可能按1,2,3增长的。关注中……
Andy__Huang 2004-12-02
  • 打赏
  • 举报
回复
我沒有遇到過這種情況?你有多少記錄是斷號的?
yiyilc 2004-12-02
  • 打赏
  • 举报
回复
数据库中没有记录!也没有人删除任何记录!
Andy__Huang 2004-12-02
  • 打赏
  • 举报
回复
可能是某些人在新增一條記錄後,又不想新記錄,把最大的id刪除,一下次再新增時,它從刪除id後面的那個id增加。

如果沒有刪除過,id應該是連接起來的
lsxaa 2004-12-02
  • 打赏
  • 举报
回复
查找一下,断的号在库中有记录么???

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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