一组行的auto_increment列?

时间:2012-03-08 22:56:47

标签: mysql auto-increment

我想弄清楚如何用3列做一个表:

unique_id, type, version

其中unique_id为每条记录的AUTO_INCREMENT,每种类型的版本为AUTO_INCREMENT。

目的是,当我插入时,我只需指定'type',并自动生成unique_id和version_id。例如:

insert type 'a', then values are:  1 , a , 1
insert type 'a', then values are:  2 , a , 2
insert type 'a', then values are:  3 , a , 3
insert type 'b', then values are:  4 , b , 1
insert type 'b', then values are:  5 , b , 2
insert type 'a', then values are:  6 , a , 4

也可以说这样的设置没有真正规范化吗?相反它应该是两个表?

2 个答案:

答案 0 :(得分:1)

您不能为每种类型生成自动生成的序列,但您可以生成自己的序列。

insert into the_table (type, version)
select 'a', 1 + IFNULL(max(version), 0)
  from the_table
  where type = 'a';

答案 1 :(得分:0)

如果表格中有很多行(并且取决于您要做的事情),那么最好为每个版本分别创建表格。然后,将每种类型插入到正确的版本表中。