数据库表主键自动增长列id的极限是多少?长度应该设置为多少? 增长从1开始

rt,

一般数据库所谓的自增列都是通过序列来完成。创建序列的语句为
CREATE SEQUENCE name
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
或者MAXVALUE xxxxx
NOCYCLE -- 一直累加,不循环

所以极限就看你自己怎么定义了。长度的话,引用序列的字段可以定为number类型,int类型等数字类型就可以了。追问

如果不设置最大值,那就没有极限了吗?这张表就可以随便存储数据了么?
那么可以存储9999999999^9999999999(这个数随便写的,)条么?
或者比这个数字更大呢?也可以么? 那主键的变化是什么样子呢?

追答

看你主键的那个字段类型是什么,支不支持9999999999^9999999999这种数据级的数字,无限大的程度是由你机器决定的。真正使用的时候,还要看实际的业务需求!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-12
和哪种数据库有关系。
通常, 数据库的INT (或INTEGER)数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。
一般长度不需要设置,系统自动的,你只需要指定类型就行了。追问

就拿mysql来说吧,如果数据的条数超过 -2的31次方(-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数的个数呢? 那么主键是怎么变化呢?

追答

int不够了就改为bigint。
再不够了就用GUID。
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。例如:2F9619FF-8B86-D011-B42D-00C04FC964FF 。
这下肯定够了吧。
mysql没有这个guid,不过可以用算法生成。

其实int应该就够了,数据太大的话就应该分区了,不能把这么多数据放一个表里。

第2个回答  2013-03-11
看你的ID的数据类型
int就是int的范围
bigint就是bigint的范围
如果id是tityint当然只有到255追问

如果数据达到最大,再有数据会怎么样呢?

追答

溢出错误

追问

那么数据就存不上了么?

追答

是的

相似回答