复合键的自动递增部分

Auto incrementing part of a composite key

目前我有一个由 (user, id) 组成的复合主键。我的用户是 John Smith,据说有 30 行与他有关,因此每次创建新条目时 id 都会自动递增。 但是,如果我想添加一个新用户,比如 Jill Smith 到同一个 table,有没有一种方法可以让我从 (Jill Smith, 1) 开始并让 id 自动递增而不会弄乱以前的条目?

没有。 MySQL 中的 AUTO_INCREMENT 不能有多个 "states" 来跟踪多个计数器。要实现所描述的行为,您需要实现自己的应用程序逻辑(w/o 使用自动增量功能)并在插入新行之前计算键的数字部分。

更新

以上内容在 MySQL 中通常是正确的,但 AUTO_INCREMENT 的工作方式取决于存储引擎。

文档非常具体地针对 MyISAM 表的特定场景:

If the AUTO_INCREMENT column is part of multiple indexes, MySQL generates sequence values using the index that begins with the AUTO_INCREMENT column, if there is one. For example, if the animals table contained indexes PRIMARY KEY (grp, id) and INDEX (id), MySQL would ignore the PRIMARY KEY for generating sequence values. As a result, the table would contain a single sequence, not a sequence per grp value.

https://dev.mysql.com/doc/refman/5.6/en/example-auto-increment.html