我正在尝试创建一个历史表来存储其对应表的所有历史记录
但是,当我从 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
答案 0 :(得分:0)
两个猜测:
方案A:交换MODIFY id
和DROP PK
。
计划B:分为两个ALTER。但是我不知道在哪里。我认为问题在于,在替换PK之前,ALTER
并没有完全放弃id
-PK链接。因此,至少要将ADD PK
移动到第二个ALTER
。