Sqlserver2000自增主键最大值

发布时间:2024-06-01 15:59 发布:上海旅游网

问题描述:

这个问题想稳很就了
表里有一个id列,int类型,设置为自增,用存储过程插入记录,插入时不用插入主键列值,sql会自动插入当前表中最大键值+1。
问题来了,int类型占4个字节,最大可能表示的id数应该是,2^32个,当所有的id值都用完的时候,就是当插入第2^32条记录的时候,会出现什么样的情况?

还有一个问题,当前表中有主键值1,2,5,6。(3,4被删掉了)
插入一条记录,自动插入的主键值是7,那么3,4就没用上,这个问题怎么解决
一次处理的数据量应该是不会那么大,但是应该总有超过的一天的。因为就算清空了当前表里的所有数据,比如原有1,2,3,都删掉以后,再插入,好像还是会插入4的。我正在做的部分是一个公司员工的每个月的工资明细表,员工数量还是挺多的,用久了应该会遇到问题一

问题解答:

超过范围直接报错吧,你的数据量能到达这个程度,多虑了把
你那么怕超过
我用SQL2005 有bigint,2000忘记了
------------------------------插入缺失值----------------
CREATE TABLE #Test
(
num INT PRIMARY KEY
)
INSERT #Test
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 6
UNION ALL
SELECT 9

INSERT INTO #Test
SELECT MIN(TA.num+1)
FROM #Test AS TA
WHERE NOT EXISTS
(
SELECT *
FROM #Test AS TB
WHERE TB.num= TA.num+1
)

SELECT * FROM #Test
希望对你有帮助

不过是主键,额是办法解决,你只有手动去修改表的架构,先取消自动增长,然后再手动去补数据,补好完,又把自动增长加上。
如果你清空 又要自增列从1开始 只能用 截取表了
TRUNCATE TABLE 表名

第一个可以选bigint,第二个没法解决!

热点新闻