колонка auto_increment для группы строк? - PullRequest
2 голосов
/ 09 марта 2012

Я пытаюсь выяснить, как сделать таблицу с 3 столбцами:

unique_id, type, version

Где unique_id - AUTO_INCREMENT для каждой записи, а версия - AUTO_INCREMENT для каждого типа.цель заключается в том, что когда я вставляю, мне нужно только указать 'type', а unique_id и version_id генерируются автоматически.Например:

insert type 'a', then values are:  1 , a , 1
insert type 'a', then values are:  2 , a , 2
insert type 'a', then values are:  3 , a , 3
insert type 'b', then values are:  4 , b , 1
insert type 'b', then values are:  5 , b , 2
insert type 'a', then values are:  6 , a , 4

Также было бы справедливо сказать, что такая настройка на самом деле не нормализована?Что вместо этого должно быть две таблицы?

Ответы [ 2 ]

1 голос
/ 09 марта 2012

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

insert into the_table (type, version)
select 'a', 1 + IFNULL(max(version), 0)
  from the_table
  where type = 'a';
0 голосов
/ 09 марта 2012

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

...