繁体   English   中英

按组自动递增

[英]auto_increment by group

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

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

对于 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。 当您要将数据放入有序组时,这很有用。

您是否考虑过复合主键

您可以通过插入触发器来实现这一点,通过 group_field 设置表组中的 max(id) 具有 group_fileld = @inserted_group;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM