mysql alter table将自动递增的列添加到复合主键

yxyvkwin  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(296)

我有一张这样的table

-------------------------------
| PK1  | PK2  | Col1  | Col2  |
-------------------------------

我想改变表,使结果看起来像

---------------------------------------------------
| PK1 | PK2 | Col1 | Col2 | PK3 (AUTO_INCREMMENT) |
---------------------------------------------------

所以插入的结果是

------------------------------------------------
| PK1 | PK2 | Col1 | Col2 | PK3(AUTOINCREMMENT)|
------------------------------------------------
|  1  |  1  | null | null |         1         |
|  1  |  1  | null | null |         2         |
|  1  |  1  | null | null |         3         |
|  1  |  2  | null | null |         1         |
|  1  |  2  | null | null |         2         |
|  1  |  2  | null | null |         3         |
|  2  |  1  | null | null |         1         |
|  2  |  1  | null | null |         2         |
|  2  |  1  | null | null |         3         |
-----------------------------------------------

我试过这个:

ALTER TABLE `table` DROP PRIMARY KEY;
ALTER TABLE `table` ADD COLUMN `PK3` NOT NULL PRIMARY KEY AUTO_INCREMENT;
ALTER TABLE `table` DROP PRIMARY KEY;
ALTER TABLE `table` ADD PRIMARY KEY (`PK1`,`PK2`,`PK3`);

但是如果pk3有自动增量,我就不能删除主键。我后来也尝试添加自动增量(正常添加pk3,然后创建复合主键,然后

ALTER TABLE `table` MODIFY COLUMN `PK3` INT NOT NULL AUTO_INCREMENT;

如果结果为#1075,则只能有一个自动列,并且必须将其定义为键
提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题