использование auto_increment в составном ключе - PullRequest
2 голосов
/ 27 сентября 2010

У меня есть таблица с составным ключом

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 ]

12 голосов
/ 27 сентября 2010

Это то, что происходит с составным первичным ключом, который включает auto_increment.Создайте заново первичный ключ так, чтобы это было только ваше поле auto_increment (empId), затем создайте уникальный индекс для companyId и empId

EDIT

Обратите внимание, что это относится только к MyISAM иБДБ столы.Если бы вы использовали InnoDB для своих таблиц, то он также работал бы так, как вы хотели

0 голосов
/ 16 мая 2013

Если вы не хотите, чтобы empId сбрасывался, просто измените порядок первичного определения

primary key(companyId,empId)

обратите внимание, что порядок составного ключа имеет значение.

...