Использование 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

Возможно ли это сделать? Спасибо


person Soft    schedule 27.09.2010    source источник


Ответы (2)


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

ИЗМЕНИТЬ

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

person Mark Baker    schedule 27.09.2010
comment
Есть ли способ заставить innodb работать как MyISAM и BDB для этого? - person underrun; 20.03.2014

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

primary key(companyId,empId)

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

person Fakeer    schedule 16.05.2013