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