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