gpt4 book ai didi

mysql - Innodb 不允许我更新复合主键?

转载 作者:行者123 更新时间:2023-11-29 16:03:47 24 4
gpt4 key购买 nike

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

但是,当我从 MyISAM 切换到 InnoDB(由于 DELETE ON CASCADE)时,以下查询会产生错误:表定义不正确;只能有一个自动列,并且必须将其定义为键

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 时,上述查询工作得很好

最佳答案

两个猜测:

A 计划:交换 MODIFY idDROP PK

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

关于mysql - Innodb 不允许我更新复合主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55932863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com