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
我不想通过任何“疯狂”的方法来实现这一点,但如果有必要的话。
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
我不想通过任何“疯狂”的方法来实现这一点,但如果有必要的话。
对于 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。当您要将数据放入有序组时,这很有用。
您是否考虑过复合主键?
You can achieve that with trigger on insert, setting max(id) from table group by group_field having group_fileld = @inserted_group;