当前位置:编程学习 > C#/ASP.NET >>

SQL ID递增问题

ID的设置是自动递增的 IDENTITY(1, 1),插入数据时自动插入从1,2,3,。。。。等递增序列,问题来了当插入数据时ID的值变成了1002不是依次递增的值,中间过程没有任何错误,整个序列是依次递增的,不存在跳序问题,求解答, --------------------编程问答-------------------- 默认递增ID是不需要显示插入的

这种情况 可能是之前又导入过数据,然后删除了,但是再次插入的话,还是会以上次导入的最大ID开始递增 --------------------编程问答-------------------- 没有显示插入,是自动插入的。中间过程没有任何错误,整个序列是依次递增的,不存在跳序问题。 --------------------编程问答-------------------- 你那1002不是你自己手动插入的? --------------------编程问答--------------------
引用 3 楼 u011130289 的回复:
你那1002不是你自己手动插入的?
都说了不是,没有显示插入,是插入数据时自动插入的。中间过程没有任何错误,整个序列是依次递增的,不存在跳序问题。 我用的SQL Server 2012,我对SQL Server很熟悉的。基本的常识我知道的。 --------------------编程问答-------------------- 数据错了是你程序插入的,不是数据库自增的 --------------------编程问答--------------------
引用 5 楼 fumanduo9 的回复:
数据错了是你程序插入的,不是数据库自增的
都说了不是手动填写的,我给代码发了:
INSERT INTO TianMao
(Customer, Description, Payment, Manager)
VALUES('鲁仲婷', 4, 30.5, 1)
GO --------------------编程问答--------------------
引用 6 楼 Lemon360 的回复:
Quote: 引用 5 楼 fumanduo9 的回复:

数据错了是你程序插入的,不是数据库自增的
都说了不是手动填写的,我给代码发了:
INSERT INTO TianMao
(Customer, Description, Payment, Manager)
VALUES('鲁仲婷', 4, 30.5, 1)
GO
 把你的几条数据copy出来,drop 表重新create在插入数据 --------------------编程问答-------------------- 直接
truncate table 表名


然后重新插入看看 --------------------编程问答-------------------- 既然自动递增,纠结这个干嘛咧。 不连续是早晚会出现的问题 --------------------编程问答-------------------- 自增并不一定连续的啊,你有100条记录,删了50条,下次再增加记录的时候就是101了 --------------------编程问答--------------------
引用 4 楼 Lemon360 的回复:
Quote: 引用 3 楼 u011130289 的回复:

你那1002不是你自己手动插入的?
都说了不是,没有显示插入,是插入数据时自动插入的。中间过程没有任何错误,整个序列是依次递增的,不存在跳序问题。 我用的SQL Server 2012,我对SQL Server很熟悉的。基本的常识我知道的。


既然熟悉的话,请问微软什么时候说过IDENTITY是连续的了。递增不意味着1、2、3、4,递增意味着1、3、5、7这也是递增的。 --------------------编程问答-------------------- 递增不仅仅意味着1、2、3、4。

你要求ID应该是50,是没有根据的。 --------------------编程问答--------------------
引用 10 楼 flashposition 的回复:
自增并不一定连续的啊,你有100条记录,删了50条,下次再增加记录的时候就是101了


不一定需要删除。如果有多用户n个事务并发,那么自然就会跳过n号,不管最后是否这n个号全都保存了,数据库操作都不会有任何异常。 --------------------编程问答-------------------- 你可以尝试从你确定的“中间过程没有任何错误”着手找问题,我上个月也遇过,当时跳了几千,我当时也认为没有任何错误的,但最终调查结果就是服务器出问题,一直超时导致的,每失败一次自增了1,失败了几千次,仅作参考。出现问题总是有原因的。 --------------------编程问答-------------------- 两种情况:1.添加过,又删除了。2.其他程序添加的时候是在实务中,添加以后实务没有提交,这样你看不到数据,但是是插入过的。

看看是不是这两种情况中的一种? --------------------编程问答--------------------
引用 11 楼 sp1234 的回复:
Quote: 引用 4 楼 Lemon360 的回复:

Quote: 引用 3 楼 u011130289 的回复:

你那1002不是你自己手动插入的?
都说了不是,没有显示插入,是插入数据时自动插入的。中间过程没有任何错误,整个序列是依次递增的,不存在跳序问题。 我用的SQL Server 2012,我对SQL Server很熟悉的。基本的常识我知道的。


既然熟悉的话,请问微软什么时候说过IDENTITY是连续的了。递增不意味着1、2、3、4,递增意味着1、3、5、7这也是递增的。


引用 13 楼 sp1234 的回复:
Quote: 引用 10 楼 flashposition 的回复:

自增并不一定连续的啊,你有100条记录,删了50条,下次再增加记录的时候就是101了


不一定需要删除。如果有多用户n个事务并发,那么自然就会跳过n号,不管最后是否这n个号全都保存了,数据库操作都不会有任何异常。

+1 --------------------编程问答-------------------- 如果你是单线程你可以在数据库里面设置下identity[(1,1)] --------------------编程问答-------------------- 微笑的飘过....... --------------------编程问答-------------------- 递增非连续......
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,