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.
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.
Have you thought about composite primary keys?
You can achieve that with trigger on insert, setting max(id) from table group by group_field having group_fileld = @inserted_group;
来源:https://stackoverflow.com/questions/677542/auto-increment-by-group