首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将auto_increment特性添加到主键

将auto_increment特性添加到主键
EN

Stack Overflow用户
提问于 2020-02-06 16:58:41
回答 2查看 72关注 0票数 1

我有一个与sql语言相关的问题。我试图将auto_increment特性添加到具有主键属性的预先存在的行中。我回来的是:

错误代码:1833年。无法更改列'ODB_ID':用于表'test3.target'的外键约束中。

表中使用的语句是

代码语言:javascript
复制
CREATE TABLE `Receptor` (
  `ODB_ID` int(11) NOT NULL,
  `Name` varchar(10) NOT NULL,
  `Older Name` varchar(10) NOT NULL,
  `Uniprot_ID` varchar(10) NOT NULL,
  `Organism` enum('H','M','R') NOT NULL,
  `Sequence` varchar(1000) NOT NULL,
  PRIMARY KEY (`ODB_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

这张表指的是这个:

代码语言:javascript
复制
CREATE TABLE `Target` (
  `Pubchem_ID` int(11) NOT NULL,
  `ODB_ID` int(11) NOT NULL,
  `Receptor` varchar(10) NOT NULL,
  `EC50` decimal(6,3) DEFAULT NULL,
  `Reference_ID` int(11) NOT NULL,
  KEY `Pubchem_ID` (`Pubchem_ID`),
  KEY `ODB_ID` (`ODB_ID`),
  KEY `Reference_ID` (`Reference_ID`),
  CONSTRAINT `target_ibfk_1` FOREIGN KEY (`Pubchem_ID`) REFERENCES `general` (`Pubchem_ID`),
  CONSTRAINT `target_ibfk_2` FOREIGN KEY (`ODB_ID`) REFERENCES `receptor` (`ODB_ID`),
  CONSTRAINT `target_ibfk_3` FOREIGN KEY (`Reference_ID`) REFERENCES `publication` (`Reference_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

我尝试了以下命令,以及来自MySQL gui的命令:

代码语言:javascript
复制
alter table `Receptor` MODIFY `ODB_ID` int not null auto_increment PRIMARY KEY;
代码语言:javascript
复制
alter table `Receptor` CHANGE `ODB_ID` `ODB_ID` int not null auto_increment PRIMARY KEY;

我在网站上看到了另一个建议,但这对我不起作用。

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-06 17:33:14

您需要禁用FOREIGN_KEY_CHECKS。然后在操作之后再次启用它。以下几点对我来说是可行的:

代码语言:javascript
复制
set session foreign_key_checks = 0;

alter table `Receptor` MODIFY `ODB_ID` int not null auto_increment;

set session foreign_key_checks = 1;

请参阅演示

注意,我还在auto_increment之后删除了ODB_ID,因为ODB_ID已经是PRIMARY KEY了。

票数 1
EN

Stack Overflow用户

发布于 2020-02-06 17:24:39

代码语言:javascript
复制
ALTER TABLE Receptor MODIFY COLUMN ODB_ID INT AUTO_INCREMENT;

我认为auto_increment列必须是主键或唯一键的一部分,因此如果不起作用,请尝试:

代码语言:javascript
复制
ALTER TABLE Receptor MODIFY COLUMN ODB_ID INT AUTO_INCREMENT PRIMARY KEY;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60100041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档