2013-12-20 2 views
0

У меня InnoDB MySQL table (sqlfiddle demo) сУстановленное значение auto_increment для каждой уникальной группы

id, name_id, name, content

И содержание, как

1, NULL, 'Brian', 'Bridge to terabithia' 
2, NULL, 'Brian', 'Pulp fiction' 
3, NULL, 'Brian', 'Trainspotting' 
4, NULL, 'Luke', 'Watchmen' 
5, NULL, 'Luke', 'Constantine' 
6, NULL, 'Tony', 'Dark knight' 
7, NULL, 'Tony', 'Shutter Island' 
8, NULL, 'John', 'Machinist' 
9, NULL, 'John', 'Matrix' 
10, NULL, 'John', 'Sin city' 
11, NULL, 'John', 'Mad Max' 

id уникальна для каждой строки. Но я не могу получить, как установить auto_increment name_id каждому уникальному имени.

Here's (sqlfiddle) То, что я пытаюсь достичь.

1, 1, 'Brian', 'Bridge to terabithia' 
2, 1, 'Brian', 'Pulp fiction' 
3, 1, 'Brian', 'Trainspotting' 
4, 2, 'Luke', 'Watchmen' 
5, 2, 'Luke', 'Constantine' 
6, 3, 'Tony', 'Dark knight' 
7, 3, 'Tony', 'Shutter Island' 
8, 4, 'John', 'Machinist' 
9, 4, 'John', 'Matrix' 
10, 4, 'John', 'Sin city' 
11, 4, 'John', 'Mad Max' 

Можно ли использовать только MySQL? Благодарим вас за чтение.

+0

Это не то, что делает 'auto_increment', или даже как его следует использовать ... – BenM

+0

Я думаю, что лучше создать другую таблицу для имен, если вы хотите дать каждому имени уникальный идентификатор, посмотрите на этот пример : http://sqlfiddle.com/#!2/0cc60/6 – Andy

ответ

4

Короткий ответ: вы не можете сделать это автоматически только с auto_increment, и вы, вероятно, тоже не должны этого делать.

Если у вас действительно есть причины сделать это, вам будет намного лучше нормализовать вашу базу данных, создав таблицу имен (name_id PK, name) и удалив столбец «name» из этой таблицы. Честно говоря, я не уверен, что вы действительно можете извлечь из этого в своем примере, но я думаю, что это может быть абстракция проблемы.

+0

Кажется, работает. Спасибо! Сделаю это с моей реальной таблицей. – NikVankevsky

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