gpt4 book ai didi

mysql - 无法创建 auto_increment 主键,当有一个外键是 auto_inc 时

转载 作者:行者123 更新时间:2023-11-30 23:19:12 25 4
gpt4 key购买 nike

我有 2 个表:

  1. 发病率:

    CREATE TABLE incidencies
    (
    id_inc INT(7) ZEROFILL NOT NULL auto_increment PRIMARY KEY,
    empresa VARCHAR(40),
    maquina VARCHAR(20),
    tipus_inc VARCHAR(20),
    estat_mon VARCHAR(20),
    estat_inc VARCHAR(20),
    dia_inc DATE,
    hora_inc TIME,
    descripcio VARCHAR(200)
    )
    CHARACTER SET utf8
    engine=innodb;
  2. 评论:

    CREATE TABLE comentaris
    (
    id_inc INT(7) ZEROFILL NOT NULL,
    id_com INT(3) ZEROFILL NOT NULL auto_increment,
    data_com DATE,
    hora_com TIME,
    comentari VARCHAR(999),
    PRIMARY KEY(id_inc, id_com),
    FOREIGN KEY (id_inc) REFERENCES incidencies (id_inc) ON DELETE CASCADE ON
    UPDATE CASCADE
    )
    CHARACTER SET utf8
    engine=innodb;

如您所见,在 COMENTARIS 表上,ID_INC 是一个外键,其来源是 auto_incremental,但在 COMENTARIS 上不再存在>.

现在我想使字段 ID_COM 自动递增,并将它们都设为主键。

表格应该是这样的:

ID_INC | ID_COM001    |  001001    |  002001    |  003002    |  004003    |  005

问题是 MySQL 似乎将 ID_INC 检测为一个 auto_incremental 字段,COMENTARIS 表上了。

当我尝试使 ID_COM 自动递增时,我收到此错误消息:

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

数据库需要是InnoDB引擎。

有什么解决办法吗?

最佳答案

这个问题与外键无关。如果这是您运行的所有代码:

CREATE TABLE comentaris
(
id_inc INT(7) ZEROFILL NOT NULL,
id_com INT(3) ZEROFILL NOT NULL auto_increment,
PRIMARY KEY(id_inc, id_com)
)
engine=innodb;

...你仍然得到同样的错误。

为了能够在 id_com 上使用 AUTO_INCREMENT,您需要有一个 key ,其中 id_com 是第一项或唯一项元素。到目前为止,您只有 id_comsecond 项的主键 — 这还不够,因为 MySQL 不能为此目的使用该索引。

我的印象是你打错了字,而你真的想要这个:

CREATE TABLE comentaris
(
id_inc INT(7) ZEROFILL NOT NULL,
id_com INT(3) ZEROFILL NOT NULL auto_increment,
PRIMARY KEY(id_com)
)
engine=innodb;

关于mysql - 无法创建 auto_increment 主键,当有一个外键是 auto_inc 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283366/

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