sql中的主键id字段的生成

来源:百度知道 编辑:UC知道 时间:2024/05/10 15:09:54
有一个表,主键Id,要存入的记录很多,用sql自带的bigint类型来自动增加估计不够。
我把Id设置为char型100个字符,每次插入记录前现寻找表中最大的Id,然后加1产生新的Id。
但是出了问题
用sql的max语句来查询时字符9小于字符10,所以我加1后插入的Id产生了主键唯一的错误。
不知道怎么办T-T
十亿,确实很多了。我是这么想的,但是boss不这么认为啊T-T

简单的方法就是9全用00000..0009(99个0)来表示
也就是高位用0补足100位,这样就能正确判断大小了
输出的时候把前面的0去掉

这个嘛...其实主键id可以不用手动改的,在sql server里面很方便,可以利用一个叫自增长字段的东西,建表时定义自增长字段是这样定义的:

[field_name] [int] IDENTITY (1,1) NOT NULL, | | |
字段名 起始值 增长值

我们在插入数据的时候,不用标明自动增长字段,它的值会自动增长.

具体可以参考以下网页,有更深入的参考
http://fengyu.china.com/sqlserver_identity.htm

bigint 最大可以达到 9,223,372,036,854,775,807 还不够你用?一天10亿条记录够多吧?那也够你用两千多万年了

你可以和他说说啊

一天10亿条记录够多吧?那也够你用两千多万年了
当面计算出来不就明白了
然后说说软件都有生命周期的
一个软件不可能用这么久的,能用20年的软件都不多.

你可以用 decimal 这个类型试试啊
固定精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1
这个更大

顺便说一句
bigint 最大可以达到 9,223,372,036,854,775,807 还不够你用?

bigint
-2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
8 Bytes