Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

auto_increment by group

Is there a way with MySQL (5.0 specifically) to have an auto_increment field who's value is based on a grouping column?

Example:

id  name   group_field
1   test   1
2   test2  1
1   test3  2
2   test4  2
1   test5  3
2   test6  3

I'd like to not have to go through any 'crazy' methods to achive this, but will if necessary.

like image 527
Glen Solsberry Avatar asked Mar 24 '09 14:03

Glen Solsberry


1 Answers

For MyISAM and BDB tables you can have an auto_increment field as a secondary part of key, e.g.

CREATE TABLE foo (
   id          INT AUTO_INCREMENT NOT NULL,
   group_field INT NOT NULL,
   name        VARCHAR(128),

   PRIMARY KEY(group_field, id)
);

Here's what the manual says about this

In this case, the generated value for the AUTO_INCREMENT column is calculated as MAX(auto_increment_column) + 1 WHERE prefix=given-prefix. This is useful when you want to put data into ordered groups.

like image 185
Paul Dixon Avatar answered Oct 02 '22 16:10

Paul Dixon