今天因为业务需求设计了一个数据库表,表里面包含type和id两个字段,我期望id是根据type来自增长的,也就是说对于不同的type,id都是从1开始自增长的,所以表示这样创建的(数据库用的mysql):
create table mytable(type int, id int auto_increment, ..., PRIMARY KEY (`type`,`id`))ENGINE=InnoDB;
但是mysql提示错误,错误信息如下:
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
网上查了下原因,应该是存储引擎的影响。我创建表时用的存储引擎是InnoDB,但是InnoDB似乎要求auto_increment类型的字段在数据库中必须拥有独立的索引,不能是联合索引,所以这样创建表也可以了: