MySQL ALTER TABLE将列auto_incremented添加到复合主键

时间:2018-10-02 12:33:04

标签: mysql alter-table composite-primary-key

我有一个类似

的表格
-------------------------------
| 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具有AUTO_INCREMENT,则无法删除主键 我还尝试稍后添加AUTO_INCREMENT(通常添加PK3,然后创建复合主键,然后

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

结果为#1075,只能有一个自动列,并且必须将其定义为键

谢谢。

0 个答案:

没有答案