Mysql联合主键自增问题

 2024-02-11 02:01:46  阅读 0

Mysql联合主键自增问题

在网上查资料的时候,偶然看到一篇文章,讲的是mysql自增联合主键的问题。 文章提到:

当多列设置为联合主键时,属性列不会盲目增加。

相反,它匹配其他主键的列。

例如:id和vid是联合主键,vid是auto,

sql递增_sql如何设置id自动递增_sql自动递增生成id

id为1时,vid自动增加;

当id变为2时,vid重置为1并开始从1开始增长。

但是我按照这个方法测试的时候,无法设置联合主键vid自动增加?

执行命令: ALTER TABLE `` `vid` `vid` int(11) not null;

错误消息:ERROR 1075 (42000):表; 只能有一辆汽车,而且必须是一把钥匙。

当时我就很疑惑,一开始以为是因为数据库有数据,后来发现是因为我用的存储引擎不对。 对于类型的字段,索引必须只包含该字段,但在表中,可以与其他字段建立联合索引。

然后我又创建了两个表进行测试。 两个表的结构有以下三个字段:id、vid、name。 id 和 vid 是联合主键,两个存储引擎都是。 不同的是:表的id自动增长; 它的视频会自动增长。

插入一些数据后,我发现:

sql自动递增生成id_sql递增_sql如何设置id自动递增

表id只会自行增加,不会根据vid的值恢复为1;

表vid会根据id值的变化恢复为1。

也就是说,如果联合主键的第一列(id)自增,则只会自增,不会根据第二列(vid)的值恢复为1。

只有在联合主键(vid)的第二列才会出现预期的效果。 根据第一列的值的变化,只会恢复为1。结论:

1、使用mysql联合主键自增,需要使用它作为存储引擎。

2、使用联合主键自增时,自增键不能是主键最左边的键。

标签: 主键 联合 字段

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码