Автоинкремент MySQL на основе внешнего ключа - PullRequest
4 голосов
/ 31 августа 2010

Допустим, у меня есть следующая таблица под названием assets со следующими полями:

id | job_id | title

Я хотел бы использовать id и job_id в качестве первичных ключей.job_id - это внешний ключ.Поле id автоматически увеличивается.Как бы получить идентификатор, чтобы начать увеличение с 0, если нет строки с тем же job_id.Если есть строка с таким же job_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 снова.

Ответы [ 2 ]

3 голосов
/ 31 августа 2010

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

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

0 голосов
/ 31 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...