在mysql语法里,只允许一个字段设置成AUTO_INCREMENT,那在mysql能否实现一个字段值根据另一个字段值进行“自增长”,只所以加个引号,是因为第二个字段是某中意义上的自增长,看一下需求例子:
column_a column_b column_c ....
1 1
2 1
3 1
4 1
1 2
2 2
1 3
如果我想新增加一条column_b的值为2的记录时,column_a的值自动为3;或当我新增加一条column_b的值为1的记录时,column_a的值自动为5。如果实现上面这个的需求,这个表结构如何来设计?
CREATE TABLE mytable (
column_a INT NOT NULL AUTO_INCREMENT,
column_b INT NOT NULL,
column_c CHAR(30) NOT NULL,
column_d MEDIUMINT NOT NULL,
PRIMARY KEY (column_b,column_a)
) ENGINE=MyISAM;
INSERT INTO mytable (column_b, column_c, column_d) VALUES(1,'aa',11),(1,'bb',11),(2,'cc',22),(1,'dd',11),(2,'ee',22),(3,'ff',33),(1,'gg',11),(2,'hh',22);
之前对组合索引的顺序没怎么注意,原理就是建立一个组合索引,如果组合所以第二个字段值是auto_increment的话会根据第一个来计算。