复合键中的auto_increment用法

时间:2010-09-27 14:33:57

标签: mysql auto-increment

我有一张带有复合键的表

emp_tbl(
companyId int not null,
empId int not null auto_increment,
name varchar2,
....
...
primary key(companyId,empId)
);

在mysql中,当我开始插入数据时发生了什么

Emp_tbl

companyId    empId
1             1
1             2
1             3
2             1
2             2

请注意,当companyId更改时,auto_increament值会再次重置为1。我想禁用它。我的意思是我不想重置auto_increament。我期待这样的结果。

companyId    empId
1             1
1             2
1             3
2             4
2             5

有可能吗? 感谢

2 个答案:

答案 0 :(得分:12)

这是包含auto_increment的复合主键所发生的情况。重新创建主键,使其纯粹是你的auto_increment字段(empId),然后在companyId和empId上创建一个唯一索引

修改

请注意,这仅适用于MyISAM和BDB表。如果您使用InnoDB作为表格,那么它也可以按照您的需要使用

答案 1 :(得分:0)

如果您不想重置empId,那么只需颠倒主要定义的顺序

primary key(companyId,empId)

请注意,复合键顺序很重要。