自动递增复合键的一部分

时间:2015-09-30 10:52:30

标签: mysql composite-primary-key

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

1 个答案:

答案 0 :(得分:2)

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

<强>更新

以上在MySQL中通常都是如此,但AUTO_INCREMENT如何工作取决于存储引擎。

文档非常具体针对 MyISAM 表的特定情况:

  

如果AUTO_INCREMENT列是多个索引的一部分,那么MySQL   使用以。开头的索引生成序列值   AUTO_INCREMENT列,如果有的话。例如,如果动物   表包含索引PRIMARY KEY(grp,id)和INDEX(id),MySQL   会忽略PRIMARY KEY来生成序列值。作为一个   结果,该表将包含单个序列,而不是每个序列   grp值。

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