Innodb не позволяет мне обновить составной первичный ключ? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать таблицу истории для хранения всех исторических записей соответствующей таблицы

Однако, когда я переключаюсь с MyISAM на InnoDB (из-за УДАЛИТЬ НА КАСКАДЕ) следующий запрос выдает ошибку: Incorrect table definition; there can be only one auto column and it must be defined as a key

CREATE TABLE tdm_history.BATCH LIKE tdm.BATCH;
ALTER TABLE tdm_history.BATCH MODIFY COLUMN id int NOT NULL,
   DROP PRIMARY KEY, ADD action VARCHAR(8) DEFAULT 'insert',
   ADD revision INT NOT NULL AUTO_INCREMENT,
   ADD stamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
   ADD PRIMARY KEY (id, revision);

Я ожидаю, что первичный элемент tdm_history.BATCH из id будет изменен на составной первичный ключ (id, revision).Обратите внимание, что приведенный выше запрос прекрасно работает, когда ядро ​​настроено на MyISAM

.

1 Ответ

0 голосов
/ 19 мая 2019

Два предположения:

План A: поменяйте местами MODIFY id и DROP PK.

План B: Разделите на два ALTER.Но я не знаю где.Я думаю, проблема в том, что ALTER не совсем отпустил ссылку id -PK, прежде чем заменить ПК.Поэтому, по крайней мере, переместите ADD PK во вторую ALTER.

...