MySQL ALTER TABLE для добавления столбца auto_incremented к составному первичному ключу - PullRequest
0 голосов
/ 02 октября 2018

У меня есть таблица типа

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

Я хочу изменить ALTER TABLE, чтобы результат выглядел примерно так:

---------------------------------------------------
| 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 может быть только один автоматический столбец, и он должен быть определен как ключ

Заранее спасибо.

...