2010-08-30 4 views
4

Допустим, у меня есть следующая таблица под названием активов со следующими полями:MySQL Auto Increment на основе внешнего ключа

id | job_id | title 

Я хотел бы использовать идентификатор и JOB_ID в качестве первичных ключей. job_id - это внешний ключ. Поле id автоматически увеличивается. Как я могу получить id, чтобы начать увеличивать на 0, если нет строки с тем же job_id. Если есть строка с тем же job_id, то увеличивайте id на 1 и так далее?

В результате я ищу это таблица, которая выглядит следующим образом:

id | job_id | title 
0  1  hi 
1  1  hello 
2  1  goodbye 
0  2  hi 
1  2  hello 

Теперь давайте говорить новая строка с job_id = 3 добавляется. Поле id должно снова начать автоматическое увеличение с 0.

+0

Да, это правильно. – Arizona1911

ответ

3

Если вы используете механизм хранения MyISAM, столбец автоматического увеличения в первичном ключе с несколькими столбцами начинается с каждого нового значения в столбце non-auto-increment.

См. http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html

+0

Да, это то, что я ищу! Поддерживается ли это только в MyISAM? Я использую InnoDB. – Arizona1911

+0

Да, это всего лишь MyISAM. Любопытно, что InnoDB имеет разные правила и различное поведение, когда вы помещаете столбец автоматического увеличения в составной первичный ключ. См. Http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html. –

-1

Если вы имеете в виду конкретно начинать с нуля, the documentation говорит, что auto_increment начинается с 1 по дизайну. Однако «Если включен режим NO_AUTO_VALUE_ON_ZERO SQL, вы можете сохранить 0 в столбцах AUTO_INCREMENT как 0 без генерации нового значения последовательности».

Если вы хотите перечислить числа, которые больше не используются в таблице, это должно произойти автоматически, если удаленные номера были самым большим числом.

+0

Мне не нужен счетчик, чтобы начать с 0. Это был просто пример. Я хотел бы иметь счетчик для каждой новой строки, вставленной с новым job_id. Если мы вернемся к примеру в открытии сообщения, если в таблицу добавлена ​​новая строка с параметром job_id, равным 3, столбец идентификатора снова начнет увеличиваться на 0. – Arizona1911

Смежные вопросы