SQL Server 问题
一张表,ID为主键,为自动增长。增长值为1.第一次我往里面插入10条说句。ID值为1-10;然后,我用DELETE语句,将里面的数据删除。再次向里面插入10条数据,可ID...
一张表 , ID为主键,为自动增长。 增长值为 1.
第一次我往里面插入10条说句。 ID 值 为 1-10;
然后 , 我用DELETE 语句,将里面的数据删除。
再次向 里面 插入10条数据, 可 ID 值 却 为 11-20;
这是为何, 前面 10 条数据我不是删除了么? 怎么再次插入 , ID 值 确实从 11开始,而非1开始。难道 前面删除10条语句时 并没有 把 ID默认值 删除? 展开
第一次我往里面插入10条说句。 ID 值 为 1-10;
然后 , 我用DELETE 语句,将里面的数据删除。
再次向 里面 插入10条数据, 可 ID 值 却 为 11-20;
这是为何, 前面 10 条数据我不是删除了么? 怎么再次插入 , ID 值 确实从 11开始,而非1开始。难道 前面删除10条语句时 并没有 把 ID默认值 删除? 展开
2个回答
展开全部
SQL Server 2005表自增字段在多次插入数据后,自增的ID号比较混乱,而且删除数据后,自增的ID并不会归零,有两种方法可以控制自增的字段:
方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数 truncate table table_name(表名)
方法二: DBCC CHECKIDENT (''table_name'', RESEED, new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。 不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。
方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数 truncate table table_name(表名)
方法二: DBCC CHECKIDENT (''table_name'', RESEED, new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。 不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。
2014-10-10
展开全部
sqlserver中设置主键自动增长的策略是:有系统维护一个变量记录当前表格已经插入的值,虽然你删除了记录,但是这个变量的值并不会改变,他还是记录有这么多条数据插入过,下次你继续插入数据的时候,id继续增长。你可以手动设置主键增长嘛,或者利用触发器。这个链接里面就有说明:http://zhidao.baidu.com/question/302975984.html,希望能够帮到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询