求教,数据库主键出现怪现象

cjfriends 2010-07-28 05:34:08
我使用的数据库是sql2000,在设计一个表时,将主键设为标识,增量为1,刚开始时,都是正常的,我没添加一条数据,主键自动添加1,但我最近发现:前一主键值为767,下一主键却变为132645,中间有一个很大的跨度?这是什么原因?虽然不影响使用,但感觉怪怪的,心理不太踏实,望各位牛人指点。
...全文
110 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjfriends 2010-07-29
  • 打赏
  • 举报
回复
恩,谢谢大家热心的帮助,还真是这么回事
hao1hao2hao3 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cjfriends 的回复:]
引用 3 楼 pt1314917 的回复:
要么是添加过很多数据,被删除了。
要么就是重置了自增种子。。

晕,我向党保证,我重来没有干过自增种子的事,因为在这之前根本就不会,那会是谁干的??????
[/Quote]

那你先试试按上面的提示把它改回来看看会有什么影响。大家只是在帮你分析问题而已,别这么激动。
cjfriends 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pt1314917 的回复:]
要么是添加过很多数据,被删除了。
要么就是重置了自增种子。。
[/Quote]
晕,我向党保证,我重来没有干过自增种子的事,因为在这之前根本就不会,那会是谁干的??????
永爱果果 2010-07-28
  • 打赏
  • 举报
回复
楼上果然厉害,把原理搞的这么清楚啊,
pt1314917 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cjfriends 的回复:]
不可能是删除造成的,数据库的数据没有达到那么大;主键变大后,还是按照自增1 在自动增加
[/Quote]


create table t(id int identity(1,1),name varchar(10))
go

--添加数据
insert into t values( 'aa')
go

--中途被修改了自增种子
set identity_insert t on
insert into t(id,name) values(132644,'bb')
set identity_insert t off
go

--再次插入时
insert into t values( 'cc')
go

--查看结果:
select * from t

/*结果
id name
----------- ----------
1 aa
132644 bb
132645 cc
*/
cjfriends 2010-07-28
  • 打赏
  • 举报
回复
不可能是删除造成的,数据库的数据没有达到那么大;主键变大后,还是按照自增1 在自动增加
pt1314917 2010-07-28
  • 打赏
  • 举报
回复
要么是添加过很多数据,被删除了。
要么就是重置了自增种子。。
obuntu 2010-07-28
  • 打赏
  • 举报
回复
If an identity column exists for a table with frequent deletions, gaps can occur between identity values. If this is a concern, do not use the IDENTITY property. However, to ensure that no gaps have been created or to fill an existing gap, evaluate the existing identity values before explicitly entering one with SET IDENTITY_INSERT ON.

这是由删除数据引起的,indentity不会自动补充空白。是正常的,
永生天地 2010-07-28
  • 打赏
  • 举报
回复
是表的标识的种子被改过吧

[sql server] 重置自增
http://blog.csdn.net/xys_777/archive/2010/07/22/5755762.aspx

34,588

社区成员

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

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