日期:2014-05-18  浏览次数:20439 次

【求助】MSSQL2005自增长字段
请问MSSQL2005自增长字段的最大值是多少?
比如初值是1,种子也是1.

在不断对数据表进行插入和删除记录时,自增长字段的值一直在增大,会不会超过int类型的上限?
若超过了上限,程序上该怎么处理?

------解决方案--------------------
SQL code
CREATE TABLE #t
(
  [myid] [int] IDENTITY(2147483645,1) NOT NULL,
  [mydt] [datetime] NOT NULL  DEFAULT (getdate()),
  [myno] [int] NULL
)

insert into #t (myno) values(1)
insert into #t (myno) values(2)
insert into #t (myno) values(3)

select * from #t

myid            mydt                    myno
--------------------------------------------
2147483645    2008-10-26 10:09:58.077     1
2147483646    2008-10-26 10:09:58.077     2
2147483647    2008-10-26 10:09:58.077     3


insert into #t (myno) values(4)

消息 8115,级别 16,状态 1,第 1 行
将 IDENTITY 转换为数据类型 int 时出现算术溢出错误。
发生算术溢出。

------解决方案--------------------
和你定义的字段类型上限一样

bigint 从 –2^63 (–9,223,372,036,854,775,808) 到 2^63–1 (9,223,372,036,854,775,807)
整数数据,从 –2^63 (–9,223,372,036,854,775,808) 到 2^63–1 (9,223,372,036,854,775,807)。存储大小为 8 字节。

integer –2^31 (-2,147,483,648) 到 2^31–1 (2,147,483,647)
整数数据,从 –2^31 (-2,147,483,648) 到 2^31–1 (2,147,483,647)。存储大小为 4 字节。

smallint –32,768 到 32,767
整数数据,从 –32,768 到 32,767。存储大小为 2 字节。
 
tinyint 从 0 到 255
整数数据,从 0 到 255。存储大小为 1 字节。