auto_increment by group

你说的曾经没有我的故事 提交于 2019-11-26 11:34:39

问题


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.


回答1:


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.




回答2:


Have you thought about composite primary keys?




回答3:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!