mySql数据库 - ID auto_increment:它有什么风险?

时间:2014-08-12 17:28:05

标签: mysql sql database

我是数据库的新手,我希望你能回答我的问题: 我有一个ID为主键的表,而不是null和Auto递增。它的数据类型是int,限制为50位。这个表将不断收到新行,所以我想知道因为数字限制而离开是否有危险,我该怎样才能覆盖这个问题。我知道这可能听起来很傻,但我真的开始了解数据库了。

3 个答案:

答案 0 :(得分:3)

我不认为你会面临任何危险。如果您将主键设置为最多包含50个数字,那么我不认为它有任何问题

9999999..........50 times...99 will be a large number

但是我不确定您使用的是哪种数据类型。因为就BIGINT而言,BIGINT总是8个字节并且可以存储 -9223372036854775808到9223372036854775807 (签名)或 0到18446744073709551615 (无符号)。没有接近50位的数字,但是这是一个很大的数字,很难达到。

旁注:

  

[...]应用程序可以使用此可选显示宽度,通过用空格左边填充来显示宽度小于为列指定的宽度的整数值。 ...

     

显示宽度不会限制可以存储在列中的值的范围,也不会限制宽度超过为列指定的值的值显示的位数。例如,指定为SMALLINT(3)的列的通常SMALLINT范围为-32768到32767,超出三个字符允许的范围之外的值将使用三个以上的字符显示。

答案 1 :(得分:0)

具有Int类型的字段将具有2,147,483,647个可用的数字。

如果您对此感到担心,可以使用BIGINT字段类型。

话虽如此,使用自动递增的INT作为主键是行业标准。

http://www.w3schools.com/sql/sql_autoincrement.asp http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

答案 2 :(得分:0)

如果你担心它可能会达到50位数(那很多行,我真的会感到惊讶,如果你达到它),你可以设置一个预定的工作来监控最大ID和当接近50位数时,然后向系统管理员发送有关清理空间或增加字段大小的电子邮件。

就使用自动数字而言,随着时间的推移,你所遇到的唯一真正的问题就是空格。如果要达到限制是一个问题,你如何清理空数据并让系统重新使用这些数字?

第二个问题是将记录移入测试数据库中或周围。由于号码将自动分配,您必须禁用自动号码或进行调整。