10

MySQL(特别是 5.0)有没有办法让 auto_increment 字段的值基于分组列?

例子:

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

我不想通过任何“疯狂”的方法来实现这一点,但如果有必要的话。

4

3 回答 3

17

对于 MyISAM 和 BDB 表,您可以将auto_increment字段作为键的辅助部分,例如

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

   PRIMARY KEY(group_field, id)
);

这是手册对此的说明

在这种情况下,AUTO_INCREMENT 列的生成值计算为 MAX(auto_increment_column) + 1 WHERE prefix=given-prefix。当您要将数据放入有序组时,这很有用。

于 2009-03-24T14:09:58.967 回答
0

您是否考虑过复合主键

于 2009-03-24T14:11:06.263 回答
0

You can achieve that with trigger on insert, setting max(id) from table group by group_field having group_fileld = @inserted_group;

于 2009-03-24T14:12:10.613 回答