关注使用自动增量字段作为MYSQL中的唯一标识符

时间:2013-11-13 14:16:39

标签: mysql database database-design

我通过PHP使用varchar随机生成的字符串作为我表中的唯一标识符但是在研究了这个网站后,似乎最好使用自动增量主键字段作为唯一标识符,因为较小的整数速度差加上我不必担心生成随机字符串。

我的朋友却警告过这样做,因为如果索引丢失或者因任何原因重置了增量号,增量号可能会改为0。另外,如果创建数据库的副本,例如。对于测试和使用COPY SELECT,不会创建索引并且自动增量会丢失。

这些问题是否有效?我应该做出改变吗? :)

编辑1

我会使用自动增量字段作为主键并将其用作其他表中的外键,因此我担心的是,如果主表中的自动增量主键因任何原因发生更改,那么其他表中的外键会变得无效

1 个答案:

答案 0 :(得分:1)

只需进行更改。

  • auto_increment必须是主键。这意味着不允许重复值。通常,您应该使用int unsigned not null auto_increment primary key作为定义。不需要负数。
  • 这是一个透明的标识符,因此任何地方都不应该引用它的实际值。引用维护的实际值可能很方便,但如果将数据复制到新数据库,则不应对值的更改产生任何担忧。您可以 INSERT该列的值,只要它不存在就可以了。