MS SQL数据库
我在某个表里设有主键,其为标识递增1
现在不明白:这个主键的数据类型属于整型的,数据又不停的递增,将来总会达到最大值吧?到最大值时是怎么处理的呢?会有重复吗,还是又转到最小值?
我自己的想法是,这个值不停的递增,到头来还是有重复。请高手帮解答:)
这个问题第1个回答:
呵呵
这个问题第2个回答:
你自己试一下到达最大的时候会怎样.
这个问题第3个回答:
SQL code
create table tb(id int identity(2147483647,1),name varchar(5))
insert into tb(name) select 'a'
--ok
insert into tb(name) select 'b'
--将 IDENTITY 转换为数据类型 int 时出现算术溢出错误。
--发生算术溢出。
这个问题第4个回答:
SQL code
CREATE TABLE #t(id tinyint identity(1,1),col int)
DECLARE @i int
SET @i=1
WHILE @i<1000
BEGIN
INSERT #t(col) VALUES(10)
SET @i=@i+1
END
这个问题第5个回答:
不会有重复的,只是最大值的问题,int类型的最大值是2147483647,如果数据量确实够大,可能会存在溢出的情况,
可以考虑使用bigint,它的最大值是9223372036854775807,很难出现溢出的情况。
这个问题第6个回答:
int 范围 -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)
应该可以满足你的上限要求。
如果比这个还多,那就用bigint,范围是 -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
所以不用担心会溢出。
如果真有那么多数据,估计你一个数据库也放不下。
这个问题第7个回答:
以前做的超市系统,就发生过溢出,后来改了bigint