mysal 数据库联合主键自增问题
网上查看资料的时候,偶然看到一篇文章谈到mysql联合主键自增长的问题,该文章提到:
?
当多列被设为联合主键时,auto_increment属性得列并不是自顾自得一味的增长。?
?????但是我按照该方法测试的时候,却无法设置联合主键vid自增长?执行命令:ALTER TABLE `test_table` CHANGE `vid` `vid` int(11) not null auto_increment;
提示错误:ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key。
?????当时百思不得其解,开始以为是数据库有数据的原因,后来才发现是因为我用的存储引擎是InnoDB的原因。对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
?????然后我又建立2张表test1table,test2table用来测试,2张表的结构都是如下三个字段:id,vid,name。id,vid为联合主键,存储引擎都是MyISAM。不同的是:test1table表是id自增长;test2table是vid自增长。结论:
1、要使用mysql联合主键自增,需使用MyISAM作为存储引擎。
2、使用联合主键自增的时候,自增键不能是主键最左的键。
?
?
转自:http://zhuchao.org/mysql%E8%81%94%E5%90%88%E4%B8%BB%E9%94%AE%E8%87%AA%E5%A2%9E%E9%97%AE%E9%A2%98-24