Innodb不让我更新组合主键吗?

时间:2019-05-01 07:21:07

标签: mysql innodb

我正在尝试创建一个历史表来存储其对应表的所有历史记录

但是,当我从 MyISAM 切换到 InnoDB 时(由于级联删除),以下查询将产生错误:asyncstorage

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的复合主键。 请注意,当引擎设置为MyISAM

时,上面的查询可以很好地工作

1 个答案:

答案 0 :(得分:0)

两个猜测:

方案A:交换MODIFY idDROP PK

计划B:分为两个ALTER。但是我不知道在哪里。我认为问题在于,在替换PK之前,ALTER并没有完全放弃id-PK链接。因此,至少要将ADD PK移动到第二个ALTER