当存在其他唯一字段时,为什么使用自动递增主键?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

下面是我创建的一个表的示例:

CREATE TABLE users
(
  uid INT NOT NULL AUTO_INCREMENT,
  username VARCHAR(60),
  passhash VARCHAR(255),
  email VARCHAR(60),
  rdate DATE,
  PRIMARY KEY(uid)
);

提问于
用户回答回答于

自动递增主键有以下几个原因:

  • 它们允许在堆栈溢出时使用重复的用户名
  • 他们允许用户名(或电子邮件地址,如果这是用来登录)被改变(容易)
  • 选择,连接和插入比varchar主键快,因为它更快地维护数字索引
  • 如你所说,验证变得非常简单: if ((int)$id > 0) { ... }
  • 输入的卫生是微不足道的: $id = (int)$_GET['id']
  • 由于外键不必重复可能的大字符串值,所以开销要小得多
用户回答回答于

如果用户名是主键,并且用户更改了他/她的用户名,则需要更新所有具有指向User表的外键引用的表。

扫码关注云+社区