关于id自动增长超范围的问题

突然发现一个问题,就是sql server,设计表的时候id主键,一般默认为int类型,但我查到int类型的范围-32768~32767,而我的数据库中的数据远不止这个数量,但我发现我的表中id值已经有超过32767的数据了.而数据库还没有出现问题,难道是我理解错了还是在sql server中主键超过范围时类型会自动变化或者别的原因?谢谢

没分了,大家见谅

慕村9548890
浏览 972回答 6
6回答

斯蒂芬大帝

sql server(2000~)中int类型的取值范围不是你说的-32768~32768,是数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。每个int类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小。 而SMALLINT 数据类型存储从-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之间的所有正负整数。每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。 TINYINT数据类型存储从0 到255 之间的所有正整数。每个TINYINT类型的数据占用1 个字节的存储空间。 BIGINT 数据类型存储从-2^63 (-9 ,223, 372, 036, 854, 775, 807) 到2^63-1( 9, 223, 372, 036 ,854 ,775, 807) 之间的所有正负整数。每个BIGINT 类型的数据占用8个字节的存储空间。

UYOU

SQLServer的int类型是4个字节,即-2^31到2^31-1,足够你用了

qq_笑_17

如果数据只能存32767条,那就没人用了

杨__羊羊

int类型的存值范围应该是从-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server